2009-07-15 4 views
2

aspnet_compiler.exeを使用してアプリケーションをプリコンパイルして展開しています。展開のためのasp.netソリューションのプリコンパイル

  • 私はCの下で私のアプリケーションアセンブリを参照してください:\ WINDOWS \ Microsoft.NET \ Frameworkの\ v2.0.50727の\ ASP.NETの一時ファイル

    しかし、私はそれは二つの理由から、働いているとは思いません場合でも、私は手動でこのディレクトリをクリアする&アプリを再起動します。

  • JITにパフォーマンスが低下し、アプリケーションが存在します。これは非常に具体的には私が避けたいものですが、それは「一回」ですが。

ここで私がやっている、具体的です:

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

もし注目されていれば、私は.net 3.5 SP1/Studio 2008 SP1を使用しています。compilation debug = falseもweb.configに設定されています。

+0

これはウェブサイトですか、ウェブアプリケーションプロジェクトですか? –

+0

ちょうどウェブサイト。 – JohnW

答えて

2

あなたの2つの点が議論の余地がある:JITのオーバーヘッドは依然として存在しますので、

  1. ASP.NETのプリコンパイルは、ネイティブイメージの生成にはなりません。ワーカープロセスの作成にかかるオーバーヘッドもあります。

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

+0

私はmsdn.microsoft.com/en-us/library/...を使って#1(あなたには論理的です)の応答を調整しようとしていますが、実際にはJITがNGENingよりも効率的であるため、 「ASP.NET Webサイトをプリコンパイルすると、最初に要求されたときにページをコンパイルする必要がないため、ユーザーの初期応答時間が速くなります。これは、頻繁に更新される大規模なWebサイトで特に役立ちます。 #2は上記の私のサンプルではN/Aです。 – JohnW

+1

より速くなることは相対的です。 JITのコンパイルを防ぐためではなく、ASPXパーサとC#コンパイラを呼び出さないために、プリコンパイルされていないアプリケーションより高速です。 –

+0

おっと... http://msdn.microsoft.com/en-us/library/ms227972.aspxは参照URLでした。 – JohnW

1

aspnet_compiler.exeでウェブサイトをプリコンパイルしても、コードをコンパイルできません。コードをコンパイルするには、ngenが必要です。

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

+0

私が望む限り、ngenは明らかにasp.netには当てはまりません。 http://support.microsoft.com/kb/331979 – JohnW

+1

KB記事はASP.Net 1.0と1.1に適用されます – stuartd

+1

この記事はASP.NET 1.xにのみ適用されます - NGENアセンブリは2.0以降サポートされています - ご覧くださいhttp://msdn.microsoft.com/en-us/magazine/cc163808.aspx –

関連する問題