我在Visual Studio(2012 Express for Desktop)中有兩個C#項目。一個是控制檯應用程序,另一個是Nunit測試庫。我希望測試庫能夠使用Process調用控制檯應用程序。Visual Studio:在C#程序中插入對可執行文件路徑的引用
我可以硬編碼到可執行文件的路徑,但我寧願不這樣做。有沒有辦法讓Visual Studio將路徑字符串嵌入到我的測試庫中?
我在Visual Studio(2012 Express for Desktop)中有兩個C#項目。一個是控制檯應用程序,另一個是Nunit測試庫。我希望測試庫能夠使用Process調用控制檯應用程序。Visual Studio:在C#程序中插入對可執行文件路徑的引用
我可以硬編碼到可執行文件的路徑,但我寧願不這樣做。有沒有辦法讓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);
找到當前正在執行的程序集的路徑。