在C#中獲取程序集路徑
在單元測試中,經常需要訪問當前執行代碼所在程序集的路徑,以便定位相關的資源,例如XML文件。
直接使用Environment.CurrentDirectory
並不總是可靠的,因為它通常指向測試框架的路徑,而不是被測試的程序集。類似地,Assembly.GetExecutingAssembly().Location
在某些測試工具中可能會返回意外的臨時路徑。
為了解決這個問題,可以使用Assembly.CodeBase
屬性獲取執行程序集的URI。通過UriBuilder
,可以從該URI中提取未編碼的文件路徑。最後,使用Path.GetDirectoryName
獲取程序集的目錄路徑。
下面的代碼片段定義了一個輔助屬性,用於提供程序集目錄路徑:
<code class="language-csharp">public static string AssemblyDirectory { get { string codeBase = Assembly.GetExecutingAssembly().CodeBase; UriBuilder uri = new UriBuilder(codeBase); string path = Uri.UnescapeDataString(uri.Path); return Path.GetDirectoryName(path); } }</code>
在測試代碼中,只需訪問此屬性即可:
<code class="language-csharp">var assemblyDirectory = AssemblyDirectory;</code>
這種方法在使用NUnit和MbUnit的各種單元測試場景中都證明是可靠的,確保始終可以檢索正確的程序集路徑。
以上是如何可靠地找到C#組件的目錄路徑?的詳細內容。更多資訊請關注PHP中文網其他相關文章!