我有 C# 代码试图使用以下代码行获取正在执行的程序集的 LocalPath
:
Uri uri = new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath;
这段代码适用于所有各种路径。它开始无法提供正确的 AbsolutePath
和 Localpath
,因为正在执行的程序集路径中包含一个 #。
Assembly.GetExecutingAssembly().CodeBase
给出 "C:\c#\ExcelAddin1.1.0\GSRExcelPlugin\bin\Debug\Common.dll"
但是 new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath 给出了“C:\c”,而它应该给出了“C:\c#\ExcelAddin1.1.0\GSRExcelPlugin\bin\Debug\”。
有什么我需要处理的,或者 Uri 类的使用方式有问题吗?
如果这是 .net 框架问题,我应该如何向 Microsoft 报告此问题?
最佳答案
System.IO.FileInfo logger = new System.IO.FileInfo(Path.Combine(Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().EscapedCodeBase).LocalPath), "settings.config"));
使用 EscapedCodeBase 而不是 CodeBase 解决了这个问题。在我偶然发现之前,我没有意识到这已经被处理了。:)
关于c# - 如果路径包含 "#",则 System.Uri 无法提供正确的 AbsolutePath 和 LocalPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/896572/