如何获取C#当前程序集的路径?
在许多情况下,确定包含正在执行代码的程序集的路径是必要的。这在使用需要访问相对于DLL的资源的单元测试时尤其重要。
解决方案:
要检索当前程序集的路径,可以使用两种替代方法:
1. 使用Assembly.Location
:
<code class="language-csharp">string path = System.Reflection.Assembly.GetExecutingAssembly().Location;</code>
此方法返回程序集的完整路径,包括文件名。但是,在某些情况下,它可能会提供意外的结果,尤其是在使用NUnit等测试框架时。
2. 使用Assembly.CodeBase
:
<code class="language-csharp">string codeBase = System.Reflection.Assembly.GetExecutingAssembly().CodeBase;</code>
CodeBase
属性包含程序集的URI格式路径。要将其转换为常规的Windows路径,请执行以下步骤:
<code class="language-csharp">UriBuilder uri = new UriBuilder(codeBase); string path = Uri.UnescapeDataString(uri.Path);</code>
附加说明:
Assembly.CodeBase
属性在.NET Core/.NET 5 中已弃用。Environment.CurrentDirectory
属性可能无法准确反映程序集的路径。以上是如何在C#中获取当前的组件的路径?的详细内容。更多信息请关注PHP中文网其他相关文章!