System.Reflection.Assembly.GetExecutingAssembly()始终返回0.0.0.0

时间:2013-04-13 21:02:09

标签: c# reflection asp.net-mvc-4

我用这个修改了我的assemblyinfo.cs:

[assembly: AssemblyVersion("1.0.*")]

在_layout.cshtml上,我把它放在这里,以便我可以识别我正在测试的构建版本:

 @System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()

它始终打印0.0.0.0

当我进入bin文件夹并检查dll属性时,版本说1.0.343.2323所以我不明白它?

2 个答案:

答案 0 :(得分:11)

显示的程序集名称为runtime assembly loaded by IIS,如果应用程序的入口点位于已更新AssemblyInfo的程序集中,则使用EntryAssembly -

Assembly.GetEntryAssembly().GetName().Version.ToString();

如果它与调用程序集不同,你可以这样做 -

Assembly.GetAssembly(typeof(YourAssembly.AnyClass)).GetName().Version.ToString();

答案 1 :(得分:5)

看起来执行的程序集不是您编译的程序集,而是由IIS创建的动态程序集。

尝试使用

typeof(Your_Type_From_NonWeb_Assembly).Assembly.GetName().Version.ToString()