在页脚上打印:
Revision 0.0.0.0
当我修改视图以使用以下内容显示“执行程序集”的所有汇编信息时
@System.Reflection.Assembly.GetExecutingAssembly().GetName().ToString()
打印以下内容:
Revision App_Web__layout.cshtml.639c3968.hlogy75x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
这表明“执行程序集”不是我的主要应用程序,而是视图本身。
我如何获得实际应用程序的组装信息,而不仅仅是单个视图?
CSHTML/VBHTML是动态编译到组装的。
@typeof(YourApplicationNamespace.MvcApplication).Assembly.GetName().Version
这对我有用。无需明确提及类型。
@ViewContext.Controller.GetType().Assembly.GetName().Version
public static HtmlString ApplicationVersion(this HtmlHelper helper)
{
var asm = System.Reflection.Assembly.GetExecutingAssembly();
var version = asm.GetName().Version;
var product = asm.GetCustomAttributes(typeof(System.Reflection.AssemblyProductAttribute), true).FirstOrDefault() as System.Reflection.AssemblyProductAttribute;
if (version != null && product != null)
{
return new HtmlString(string.Format("<span>{0} v{1}.{2}.{3} ({4})</span>", product.Product, version.Major, version.Minor, version.Build, version.Revision));
}
else
{
return new HtmlString("");
}
}
typeof(MyType).Assembly.Whatever
where是MVC项目本身(例如,控制器或模型或
MyType
MvcApplication
扩展TakePara的答案,如果您想从MVC Razor视图中获取一个衬套,以获取汇编的信息:
<p>Assembly Version: @typeof(EdiServer.Controllers.HomeController).Assembly.GetName().Version.ToString();</p>
对于API控制器,我基于其他答案使用了此功能
您可以尝试使用getCallingAssembly()。我不确定这是否足够高,这是否足够高,但是由于Razor实际上为每个视图创建一个组件,因此可以认为您的应用程序将成为视图组件的呼叫组件。 我的问题是,我之后已重命名为命名空间,并且在上面遇到了错误。 问题是\ web.config中的旧名称空间参考。我不得不将其从
Project.WebAPI17
Company.Project.WebAPI17
IN.NET CORE 6及以上:
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="Company.Project.WebAPI17" />
</namespaces>
</pages>
</system.web.webPages.razor>
or
GetType().Assembly.GetName().Version.ToString();
是您要寻找的?