2012-11-05 10 views
7

Ich versuche, meine Produktversion in einer Razor-Ansicht (_Layout.cshtml) anzuzeigen. Ich mache so etwas wie dieses:So erhalten Sie die Produktversion von einer Razor View

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

Das Problem ist, dass der erste Alarm zeigte mir 0.0.0.0 dann führte ich den zweiten Alarm und es zeigt mir folgende Lage:

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

Natürlich ist dies nicht meine Assembly-Datei. Gibt es eine einfache und saubere Möglichkeit, die Assembly-Version von einer Razor-Ansicht zu erhalten?

+0

Die Assembly-Version und die Produktversion sind nicht das Gleiche. Die Assembly-Version wird mit dem Attribut 'AssemblyVersion' angegeben. Die Version _product_ wird mit dem Attribut 'AssemblyInfoVersion' angegeben. Die folgende akzeptierte Antwort gilt nur für das Auffinden des AssemblyVersion-Werts. –

Antwort

11

Edited für bessere Antwort

Ich vermute, dass es versucht, die Version des Razor Motors zu bekommen, nicht Ihre Anwendung. Eine Umgehungslösung besteht also darin, diese Informationen in den Controller zu übertragen und sie über eine Viewbag an die Ansicht zu senden.

In Ihrem Controller Add -

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

Ihrer Ansicht nach Add -

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

Die ausführende Baugruppe ist dieselbe. – lontivero

+0

Hoppla, es tut mir leid! Meine Finger waren schneller als mein Verstand. Du hast recht. Vielen Dank! – lontivero

3

Die Antwort ist in der Tat versteckt, wie ASP.NET behandelt jede Seite/Blick (Razor Ansicht). Es kompiliert jede Seite/Ansicht in eine separate DLL. Sein Name könnte sein, wie Ihre Frage sagt:

App_Web_j2tdatrx.dll 

Und es ist wirklich innerhalb des (Bitte sehen)

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

So platziert, wenn Sie die Version des „Web“ assembly erhalten möchten Du musst es anders finden. Weil es nicht der ausführende ist. Um die Version in diesem Fall zu erhalten, machen Sie mehr Reflexion und finden Sie die Bibliothek, die Sie anzeigen möchten: z. Firm.Product.Web.dll

Verwandte Themen