10

製品バージョンをRazorビューで表示しようとしています(_Layout.cshtml)。私はこのようなことをしています:

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

問題は、最初のアラートが0.0.0.0を示した後、2番目のアラートを導入すると、次の場所が表示されることです。

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\

したがって、「Web」アセンブリのバージョンを取得する場合は、別の方法で見つける必要があります。実行中のものではないからです。この場合のバージョンを取得するには、さらに熟考して、表示するライブラリを見つけます。例:Firm.Product.Web.dll

于 2012-11-05T19:27:31.800 に答える