加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 无法获取脚本的程序集版本

发布时间:2020-12-15 19:07:27 所属栏目:asp.Net 来源:网络整理
导读:我使用 this question中提到的自动生成版本(不是选择的答案,而是使用[assembly:AssemblyVersion(“1.0。*”)]技术的答案。我这样做在我的Site.Master文件在MVC 2的脚注。我的代码为这样做如下: div id="footer" a href="emailto:webmaster@foo.com"webmas
我使用 this question中提到的自动生成版本(不是选择的答案,而是使用[assembly:AssemblyVersion(“1.0。*”)]技术的答案。我这样做在我的Site.Master文件在MVC 2的脚注。我的代码为这样做如下:
<div id="footer">
    <a href="emailto:webmaster@foo.com">webmaster@foo.com</a> - Copyright ? 2005-<%= DateTime.Today.Year.ToString() %>,foo LLC. All Rights Reserved.
    - Version: <%= Assembly.GetEntryAssembly().GetName().Version.ToString() %>
</div>

我得到的异常是一个Object引用未设置为对象的实例,因为GetEntryAssembly()返回NULL。我的其他选项也不工作。 GetCallingAssembly()总是返回“4.0.0.0”和GetExecutingAssembly()总是返回“0.0.0.0”。当我去看看我的DLL,一切都是版本控制,如我所料。但我不知道如何访问它显示在我的页脚!

解决方法

这是因为Assembly.GetEntryAssembly()返回null:在ASP.NET网站中没有“条目”程序集(因为.NET框架托管在w3wp.exe进程中)。 Assembly.GetEntryAssembly()用于获取您启动的.exe程序集(通常在控制台或Windows应用程序中)

原因Assembly.GetAssembly(this.GetType())返回一个版本为“0.0.0.0”的程序集是因为ASP.NET将您的Site.Master文件编译为“ASP.NET临时文件”文件夹下的临时程序集。这是一个对“生成”类的引用。

Assembly.GetExecutingAssembly()基本上与Assembly.GetAssembly(this.GetType())相同(除了它也适用于没有“this”(例如在静态方法)。

最好的方法是使用显式性,使用你知道存在于你之后的程序集中的类型。例如,我假设你的“Site.Master”有一个代码隐藏文件,编译到程序集中。您可以改用:

Assembly.GetAssembly(typeof(Site)).GetName().Version.ToString()

(假设类的名称是Site)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读