我在 Visual Studio(2012 Express for Desktop)中有两个 C# 项目。一个是控制台应用程序,另一个是 Nunit 测试库。我希望测试库能够使用 Process 调用控制台应用程序。
我可以硬编码可执行文件的路径,但我不想这样做。有没有办法让 Visual Studio 将路径字符串嵌入我的测试库中?
我在 Visual Studio(2012 Express for Desktop)中有两个 C# 项目。一个是控制台应用程序,另一个是 Nunit 测试库。我希望测试库能够使用 Process 调用控制台应用程序。
我可以硬编码可执行文件的路径,但我不想这样做。有没有办法让 Visual Studio 将路径字符串嵌入我的测试库中?
尝试使用此代码段查找Assembly
CodeBase
(Location
执行测试时可能会出错,因为许多测试运行者创建了临时文件夹)
var codeBase = typeof(AnyTypeFromAnotherAssembly).Assembly.CodeBase;
var uri = new UriBuilder(codeBase);
var path = Uri.UnescapeDataString(uri.Path);
另一种方法是通过它的名称查找,但我什至不建议对其名称进行硬编码,因为您会希望安全地更改它的名称。
var codeBase= AppDomain.CurrentDomain
.GetAssemblies()
.First(assembly => assembly.ManifestModule.Name == "MyAssembly.dll")
.CodeBase
不要在任何地方硬编码完整路径,因为它会因环境而异。
你有几个我能想到的选择:
1)添加资源文件(.resx
),然后引用资源键(强类型)
2)在配置文件中添加路径。 AppSettings
可能会奏效。
您可以使用
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
查找当前正在执行的程序集的路径。