如何从Razor View获取产品版本

时间:2012-11-05 19:09:00

标签: c# asp.net .net razor

我正在尝试在Razor视图中显示我的产品版本(_Layout.cshtml)。我正在做这样的事情:

<script>
alert('@FileVersionInfo.GetVersionInfo(Assembly.GetExecutingAssembly().Location).ProductVersion');
alert('@Assembly.GetExecutingAssembly().Location');
</script>

问题是第一个警报显示0.0.0.0然后,我引入了第二个警报,它显示了以下位置:

  

C:WindowsMicrosoft.NETFramework644.0.30319Temporary ASP.NET Filesoot#35f35b93778aeaApp_Web_ztow0zpu.dll

显然这不是我的汇编文件。是否有任何简单而干净的方法从Razor视图中获取装配版本?

2 个答案:

答案 0 :(得分:11)

编辑以获得更好的答案

我猜它正试图获得Razor Engine的版本,而不是你的应用程序。因此,解决方法是在控制器中获取此信息并通过视图包将其发送到视图。

在您的控制器中添加 -

ViewBag.Version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;

在您的视图中添加 -

<h1>@ViewBag.Version</h1>

答案 1 :(得分:3)

实际上隐藏了答案ASP.NET如何处理每个页面/视图(Razor视图)。它将每个页面/视图编译成分离的dll。它的名字可以像你的问题所说:

App_Web_j2tdatrx.dll

它真的放在了(请看一下)

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\

因此,如果您想获得“网络”程序集的版本,您必须以不同的方式找到它。因为它不是执行者。 要获得此版本的版本,请执行更多反射并找到要显示的库:例如 Firm.Product.Web.dll