如果Path包含"#",则System.Uri无法提供正确的AbsolutePath和LocalPath

4 .net c#

我有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"

但是新的Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath给出"C:\ c",而它应该给出"C:\ c#\ ExcelAddin1.1.0\GSRExcelPlugin\bin\Debug \".

有没有我需要处理的东西,或者Uri类使用的方式有什么不对吗?

如果这是.net框架问题,我该如何向Microsoft报告此问题?

use*_*r_v 7

System.IO.FileInfo logger = new System.IO.FileInfo(Path.Combine(Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().EscapedCodeBase).LocalPath), "settings.config"));
Run Code Online (Sandbox Code Playgroud)

使用EscapedCodeBase而不是CodeBase解决了这个问题.我知道这已经处理好了,直到我偶然发现它.:)