System.Uri不使用特定符号

时间:2016-08-21 06:54:13

标签: c# path uri .net-assembly

我尝试使用Uri从Codebase获取相对路径时发现了一个问题。

var codeBase = Assembly.GetExecutingAssembly().CodeBase;
var path = new Uri(codeBase).LocalPath;

问题是,我的工作区位于 ... / dev / C#/ workspace /... Windows允许将文件夹名称设置为" C#",但是System.Uri并不理解这一切,并在" "之后切断了所有内容。符号

我知道代码库只是从" file:/// "开始,这就是我可以通过以下方式避免此问题的原因使用

var path = codeBase.Substring(8);
return Directory.GetParent(path).FullName;

但我认为有更优雅的解决方案。你不知道吗?

P.S。我不想重命名我的文件夹,因为很难让我的所有TFS项目都能正常工作。请不要提供任何其他AssembliesAppDomain方法来获取路径 - 仅Assembly.GetExecutingAssembly().Codebase对我有效。

UPD:我可以使用这样的东西:

var uri = new Uri(codeBase);
var path = uri.LocalPath + uri.Fragment;

这是一种更好的方法吗?

2 个答案:

答案 0 :(得分:0)

怎么样

Assembly.GetExecutingAssembly().Location

答案 1 :(得分:0)

使用以下方法解决我的任务:System.Web.HttpRuntime.BinDirectory

但问题是 - 如何使用Uri和特定符号?仍然开放