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

Lui*_*cia 4 c# reflection asp.net-mvc-4

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

[assembly: AssemblyVersion("1.0.*")]
Run Code Online (Sandbox Code Playgroud)

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

 @System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
Run Code Online (Sandbox Code Playgroud)

它总是打印 0.0.0.0

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

Roh*_*ats 11

显示的程序集名称是一些runtime assembly loaded by IIS,而是EntryAssembly在应用程序的入口点位于已更新AssemblyInfo的程序集中时使用 -

Assembly.GetEntryAssembly().GetName().Version.ToString();
Run Code Online (Sandbox Code Playgroud)

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

Assembly.GetAssembly(typeof(YourAssembly.AnyClass)).GetName().Version.ToString();
Run Code Online (Sandbox Code Playgroud)


ale*_*lex 5

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

尝试使用

typeof(Your_Type_From_NonWeb_Assembly).Assembly.GetName().Version.ToString()
Run Code Online (Sandbox Code Playgroud)