2

aspnet_compiler.exeを使用して、デプロイメント用にアプリケーションをプリコンパイルしています。

ただし、次の2つの理由から、機能していないと思います。

  • このディレクトリを手動でクリアしてアプリを再起動しても、C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ TemporaryASP.NETFilesの下にアプリケーションアセンブリが表示されます。
  • JITアプリケーションのパフォーマンスへの影響があります。これは、「1回限り」ですが、特に避けたいことです。

具体的には、次のようにしています。

  1. スタジオでソリューションを構築します。
  2. aspnet_compiler.exe -v / Foo -pc:\ builddir c:\ deploydirを実行します(Fooはアプリが実行されるvdir、c:\ builddirはスタジオのビルド先、c:\deploydirは
  3. 次に、c:\deploydirをWebサーバーにコピーします。
  4. http:// localhost/Fooにアクセスします
  5. 30秒後、アプリが表示され、アセンブリが一時ASP.NETファイルで生成されたことがわかります。

注目すべき場合は、.net 3.5 SP1 / Studio2008SP1を使用しています。コンパイルdebug=falseもweb.configで設定されます。

4

2 に答える 2

2

あなたの2つのポイントは議論の余地があります:

  1. ASP.NETの事前コンパイルではネイティブイメージが生成されないため、JITオーバーヘッドは引き続き存在します。ワーカープロセスの作成オーバーヘッドもある可能性があります。

  2. ASP.NETの事前コンパイルには、すべて(ASPXのものを含む)またはソースコード(-uスイッチで指定できます)のみをコンパイルするオプションがあります。後者の場合でも、これらのアセンブリはASPXファイル用に生成されます。前者の場合、表示されているのはアセンブリ生成ではありません。ランタイムは、アセンブリをにコピーしてキャッシュするだけ/binですTemporary ASP.NET Files。アセンブリをバイトごとに比較してこの事実を確認し、それらが同一であることを確認できます。

于 2009-07-15T00:10:15.927 に答える
1

を使用してWebサイトをプリaspnet_compiler.exeコンパイルしても、コードはJITコンパイルされません。これを行うには、コードをngenする必要があります。

ネイティブイメージジェネレーター(Ngen.exe)は、管理対象アプリケーションのパフォーマンスを向上させるツールです。Ngen.exeは、コンパイルされたプロセッサ固有のマシンコードを含むファイルであるネイティブイメージを作成し、それらをローカルコンピュータのネイティブイメージキャッシュにインストールします。ランタイムは、ジャストインタイム(JIT)コンパイラを使用して元のアセンブリをコンパイルする代わりに、キャッシュからのネイティブイメージを使用できます。

于 2009-07-15T00:08:32.747 に答える