gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 09:00:22 25 4
gpt4 key购买 nike

我正在使用this question中提到的自动构建版本控制(不是选定的答案,而是使用[assembly: AssemblyVersion("1.0.*")]技术的答案)。我正在MVC 2中Site.Master文件的页脚中执行此操作。执行此操作的代码如下:

<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 reference not set to an instance of an object,因为 GetEntryAssembly()返回 NULL。我的其他选择也不起作用。 GetCallingAssembly()始终返回“4.0.0.0”,而 GetExecutingAssembly()始终返回“0.0.0.0”。当我查看我的DLL时,一切都按照我的期望进行了版本控制。但是我不知道如何访问它以显示在我的页脚中!!

最佳答案

这是因为Assembly.GetEntryAssembly()返回null:ASP.NET站点中没有“entry”程序集(因为.NET框架托管在w3wp.exe进程中)。 Assembly.GetEntryAssembly()用于获取从中启动的.exe程序集(通常在控制台或Windows应用程序中)
Assembly.GetAssembly(this.GetType())返回版本为“0.0.0.0”的程序集的原因是因为ASP.NET将您的Site.Master文件编译为“ASP.NET临时文件”文件夹下的临时程序集。 this是对“generated”类的引用。
Assembly.GetExecutingAssembly()Assembly.GetAssembly(this.GetType())基本相同(除了在没有“this”(例如,在静态方法中)时也可以使用)。

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

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

(假设类的名称为 Site)

关于asp.net-mvc - 无法获取页脚的程序集版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com