Visual Studio:在C#程序中插入对可执行路径的引用

时间:2013-01-10 14:03:23

标签: c# visual-studio-2012

我在Visual Studio中有两个C#项目(2012 Express for Desktop)。一个是控制台应用程序,另一个是Nunit测试库。我希望测试库能够使用Process调用控制台应用程序。

我可以硬编码可执行文件的路径,但我宁愿不这样做。有没有办法让Visual Studio在我的测试库中嵌入路径字符串?

3 个答案:

答案 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);

找到当前正在执行的程序集的路径。