2012-11-05 10 views
7

Sto tentando di visualizzare la versione del mio prodotto in una visualizzazione Razor (_Layout.cshtml). Sto facendo qualcosa di simile:Come ottenere la versione del prodotto da una vista a rasoio

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

Il problema è che il primo avviso mi ha fatto vedere 0.0.0.0 poi, ho introdotto il secondo avviso e mi mostra il seguente percorso:

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

Ovviamente questo non è il mio file di assiemi. C'è un modo semplice e pulito per ottenere la versione di assemblaggio da una visualizzazione Razor?

+0

La versione di assieme e la versione del prodotto non sono la stessa cosa. La versione dell'assembly viene specificata utilizzando l'attributo 'AssemblyVersion'. La versione _product_ è specificata utilizzando l'attributo 'AssemblyInfoVersion'. La risposta accettata di seguito è valida solo per trovare il valore di AssemblyVersion. –

risposta

11

A cura di risposta migliore

Sto indovinando che sta cercando di ottenere la versione del rasoio del motore, senza l'applicazione. Quindi una soluzione alternativa è ottenere queste informazioni nel controller e inviarle alla vista attraverso un viewbag.

Nel vostro controller aggiuntivo -

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

Secondo lei add -

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

L'assembly in esecuzione è lo stesso. – lontivero

+0

Ooops, mi dispiace! Le mie dita erano più veloci della mia mente. Hai ragione. Grazie! – lontivero

3

La risposta è nascosta in effetti come ASP.NET gestisce ogni pagina/View (vista Razor). Compila ogni pagina/vista in una DLL separata. Il suo nome potrebbe essere la tua domanda dice:

App_Web_j2tdatrx.dll 

Ed è proprio collocato all'interno del (si prega di dare un'occhiata)

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

Quindi, se si vuole ottenere la versione del "web" di assemblaggio , devi trovarlo in un modo diverso. Perché non è quello in esecuzione. Per ottenere la versione in questo caso, fare più riflessioni e trovare la libreria che si desidera mostrare: ad es. Firm.Product.Web.dll

Problemi correlati