2012-11-05 12 views
7

Próbuję wyświetlić moją wersję produktu w widoku Razor (_Layout.cshtml). Jestem robi coś takiego:Jak uzyskać wersję produktu z widoku Razor

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

Problem polega na tym, że pierwszy alert pokazał mi 0.0.0.0 potem wprowadziłem drugiego wpisu i pokazuje mi następującej lokalizacji:

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

Oczywiście nie jest to mój plik montaż. Czy istnieje prosty i czysty sposób na uzyskanie wersji złożonej z widoku maszynki Razor?

+0

Wersja montażowa i wersja produktu to nie to samo. Wersja złożona jest określona za pomocą atrybutu 'AssemblyVersion'. Wersja _product_ jest określona za pomocą atrybutu 'AssemblyInfoVersion'. Przyjęta poniżej odpowiedź jest ważna tylko dla znalezienia wartości AssemblyVersion. –

Odpowiedz

11

Edited na lepszą odpowiedź

Jestem zgadywania, że ​​stara się uzyskać wersji Razor silnika nie aplikacji. Tak więc obejście tego problemu polega na zebraniu tych informacji w kontrolerze i przesłaniu ich do widoku za pomocą okna obserwacyjnego.

W kontrolerze ADD -

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

w widoku ADD -

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

Zespół wykonujący jest ten sam. – lontivero

+0

Ooops, przepraszam! Moje palce były szybsze niż mój umysł. Masz rację. Dziękuję Ci! – lontivero

3

Odpowiedź kryje się w rzeczywistości jak ASP.NET obsługuje każdą stronę/(widok Razor). Kompiluje każdą stronę/widok do oddzielnej biblioteki dll. Jego nazwa może być tak Twoje pytanie mówi:

App_Web_j2tdatrx.dll 

i jest to naprawdę umieszczone wewnątrz (proszę spojrzeć)

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

Więc jeśli chcesz uzyskać wersję „sieci” montaż , musisz znaleźć to w inny sposób. Ponieważ nie jest to wykonanie wykonawcze. Aby pobrać wersję w tym przypadku, wykonaj więcej refleksji i znajdź bibliotekę, która ma być wyświetlana: np. Firm.Product.Web.dll

Powiązane problemy