2012-11-05 44 views
7

我試圖在剃刀視圖中顯示我的產品版本(_Layout.cshtml)。 I'm做這樣的事情:如何從剃刀視圖獲取產品版本

<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

顯然,這不是我的彙編文件。有沒有什麼簡單而乾淨的方法從剃刀視圖中獲得程序集版本?

+0

程序集版本和產品版本不是一回事。程序集版本是使用'AssemblyVersion'屬性指定的。 _product_版本是使用'AssemblyInfoVersion'屬性指定的。以下接受的答案僅適用於查找AssemblyVersion值。 –

回答

11

編輯以更好的答案

我猜測它試圖讓剃刀引擎,而不是你的應用程序的版本。所以一個解決方法是在控制器中獲取這些信息並通過一個viewbag發送給視圖。

在您的控制器添加 -

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

您認爲加 -

<h1>@ViewBag.Version</h1> 
+0

正在執行的程序集是同一個。 – lontivero

+0

哎呀,我很抱歉!我的手指比我的頭腦快。你是對的。謝謝! – lontivero

3

答案就藏在事實上ASP.NET如何處理各頁/視圖(Razor視圖)。它將每個頁面/視圖編譯爲獨立的dll。它的名字可能是你的問題說:

App_Web_j2tdatrx.dll 

而且它真的放在(請看看)內

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

所以,如果你想獲得「網絡」的版本裝配,你必須找到不同的方式。因爲它不是執行的。 要在這種情況下獲得版本,請進行更多反思並找到要顯示的庫:例如Firm.Product.Web.dll