我尝试使用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项目都能正常工作。请不要提供任何其他Assemblies
或AppDomain
方法来获取路径 - 仅Assembly.GetExecutingAssembly().Codebase
对我有效。
UPD:我可以使用这样的东西:
var uri = new Uri(codeBase);
var path = uri.LocalPath + uri.Fragment;
这是一种更好的方法吗?
答案 0 :(得分:0)
怎么样
Assembly.GetExecutingAssembly().Location
答案 1 :(得分:0)
使用以下方法解决我的任务:System.Web.HttpRuntime.BinDirectory
但问题是 - 如何使用Uri和特定符号?仍然开放