我在Visual Studio中有两个C#项目(2012 Express for Desktop)。一个是控制台应用程序,另一个是Nunit测试库。我希望测试库能够使用Process调用控制台应用程序。
我可以硬编码可执行文件的路径,但我宁愿不这样做。有没有办法让Visual Studio在我的测试库中嵌入路径字符串?
答案 0 :(得分:0)
尝试使用此代码段来查找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 :(得分:0)
你有几个我能想到的选择:
1)添加资源文件(.resx
),然后引用资源键(强类型)
2)在配置文件中添加路径。 AppSettings
可能有用。
答案 2 :(得分:0)
您可以使用
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
找到当前正在执行的程序集的路径。