Jay*_*ens 100 c# reflection assemblies razor asp.net-mvc-3
我在_Layout.cshtml文件的页脚中使用以下代码将AssemblyInfo版本数据放入我的MVC3站点中每个页面的页脚.然而:
@System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
Run Code Online (Sandbox Code Playgroud)
只需在页脚中打印:
Revision 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
当我修改视图以使用以下内容显示"执行装配"的所有装配信息时
@System.Reflection.Assembly.GetExecutingAssembly().GetName().ToString()
Run Code Online (Sandbox Code Playgroud)
其中打印以下内容:
Revision App_Web__layout.cshtml.639c3968.hlogy75x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
Run Code Online (Sandbox Code Playgroud)
这表明"执行程序集"不是我的主要应用程序,它是视图本身.
如何获取ACTUAL应用程序的程序集信息,而不仅仅是单个视图?
小智 211
cshtml/vbhtml是动态编译到程序集.
@typeof(YourApplicationNamespace.MvcApplication).Assembly.GetName().Version
Run Code Online (Sandbox Code Playgroud)
这个怎么样?
Jay*_*Jay 15
使用这个助手适合我:
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("");
}
}
Run Code Online (Sandbox Code Playgroud)
Hao*_*aru 11
这适合我.无需明确提及类型.
@ViewContext.Controller.GetType().Assembly.GetName().Version
Run Code Online (Sandbox Code Playgroud)
您需要在项目中获取类型的程序集:
typeof(MyType).Assembly.Whatever
Run Code Online (Sandbox Code Playgroud)
哪里MyType是任何类型的MVC项目本身(例如,控制器或模型,或MvcApplication阶级)