2013-01-10 38 views
0

我在Visual Studio(2012 Express for Desktop)中有兩個C#項目。一個是控制檯應用程序,另一個是Nunit測試庫。我希望測試庫能夠使用Process調用控制檯應用程序。Visual Studio:在C#程序中插入對可執行文件路徑的引用

我可以硬編碼到可執行文件的路徑,但我寧願不這樣做。有沒有辦法讓Visual Studio將路徑字符串嵌入到我的測試庫中?

回答

0

嘗試使用此代碼段找到AssemblyCodeBaseLocation執行測試時,因爲很多測試運行臨時文件夾中創建的可能是錯的)

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 

不要在任何地方硬編碼完整路徑,因爲它會因環境而異。

0

你有我能想到的幾個選項:

1)添加一個資源文件(.resx),然後引用的資源鍵(強類型)

2)添加的路徑在配置文件。 AppSettings可能工作。

0

您可以使用

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

找到當前正在執行的程序集的路徑。

相關問題