Assembly.CodeBase:什么时候没有文件-URI?
Assembly.Location 给出了程序集的简单路径。不幸的是,当在影子环境(例如单元测试或 ASP.NET)中运行时,该值是空的。不过,Codebase 属性可用,并提供了可以替代使用的 URI。在什么情况下它不返回以 file:///
开头的 URI?或者换句话说:在什么情况下这不起作用或将返回不可用的结果?
Assembly assembly = GetType().Assembly;
Uri codeBaseUri = new Uri(assembly.CodeBase);
string path = codeBaseUri.LocalPath;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
可以直接通过 HTTP 加载程序集,例如在 ClickOnce 部署中:
It's possible to load assemblies directly over HTTP, such as in a ClickOnce deployment:
此外,#char 作为片段分隔符也受到威胁。
请参阅 http://blogs.msdn.com /ncl/archive/2010/02/23/system-uri-faq.aspx(第 9 节)进行简短说明。
使用 Assembly.EscapedCodeBase 而不是 Assembly.CodeBase 来对抗它。
Also, # char is threated as a fragment separator.
See http://blogs.msdn.com/ncl/archive/2010/02/23/system-uri-f-a-q.aspx (section 9) for short explanation.
Use Assembly.EscapedCodeBase instead of Assembly.CodeBase to fight it.
古老的问题,但我发现一个相关的、相当新的功能改变了情况:根据 Assembly.CodeBase 。 microsoft.com/en-us/dotnet/core/deploying/single-file#api-incompatibility" rel="nofollow noreferrer">https://learn.microsoft.com/en-us/dotnet/core/deploying/single -file#api-不兼容
Ancient question, but I found a relevant, consderably new feature changing the picture: packing a dotnet core app into a single file will break
Assembly.CodeBase
according to https://learn.microsoft.com/en-us/dotnet/core/deploying/single-file#api-incompatibility