0

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

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

4

3 回答 3

0

尝试使用此代码段查找Assembly CodeBaseLocation执行测试时可能会出错,因为许多测试运行者创建了临时文件夹)

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

不要在任何地方硬编码完整路径,因为它会因环境而异。

于 2013-01-10T14:06:24.677 回答
0

你有几个我能想到的选择:

1)添加资源文件(.resx),然后引用资源键(强类型)

2)在配置文件中添加路径。 AppSettings可能会奏效。

于 2013-01-10T14:06:36.267 回答
0

您可以使用

string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);

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

于 2013-01-10T14:21:52.183 回答