asp.net-mvc – 无法获取脚本的程序集版本
我使用
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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.NET:在客户端添加控件
- asp.net – 使用itemtemplate动态地将列添加到Grid-view
- asp.net – Web部署不部署index.cshtml
- asp.net-mvc-4 – Quartz.NET触发器不会触发,MVC4
- ASP.NET WebApi使用Swagger做接口文档
- .net – 通过互联网向银行收取的最简单的方法是什么?
- ASP.Net用户名到电子邮件
- .net – WebApi OData实体集/密钥/导航/密钥支持
- asp.net-mvc – ASP.NET MVC:Controller.HandleUnknownAct
- asp.net – 如何禁用通过IIS提供的单页面应用程序HTML文件的
- asp.net-mvc – EditorFor()和additionalViewDat
- asp.net-core – .NET Core的静态代码分析工具
- ASP.NET中的网站或Web应用程序
- asp.net-mvc – 如何使ASP.Net MVC控制器动作异步
- asp.net-mvc – @Model和@model之间的区别
- 如何使用ASP.NET MVC让jQuery.Ajax使用重定向执行
- 解析ASP.NET MVC使用Java中的Jackson JSON库返回
- asp.net – ThreadPools vs Own Threads用于长时
- ASP.Net分层应用程序 – 在层之间共享实体数据模
- asp.net – Response.End()和Response.Flush()之