10

我正在尝试在 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 视图中获取程序集版本?

4

2 回答 2

13

编辑以获得更好的答案

我猜它正在尝试获取 Razor 引擎的版本,而不是您的应用程序。所以一种解决方法是在控制器中获取此信息并通过视图包将其发送到视图。

在您的控制器中添加 -

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

在您看来,添加 -

<h1>@ViewBag.Version</h1>
于 2012-11-05T19:19:10.400 回答
3

答案实际上隐藏在 ASP.NET 如何处理每个页面/视图(Razor 视图)中。它将每个页面/视图编译成单独的 dll。它的名称可能如您的问题所说:

App_Web_j2tdatrx.dll

而且它真的是放在里面的(请看一看)

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

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

于 2012-11-05T19:27:31.800 回答