web-dev-qa-db-ja.com

コードが背後にあるASP.NETWebサイトで、.csファイルはどの時点でコンパイルされますか?

簡単に言うと、コードビハインドのあるASP.net Webサイトでは、*。csファイルはどの時点でコンパイルされますか?

コンテキスト:その後、離れた同僚が、.csコードビハインドを使用してWebサイトを共有サーバーにデプロイしました。 .csファイルに小さな変更を加えました。これは、いずれかのページに反映されるはずですが、まだ表示されていません。アプリケーションプールを再起動しましたが、同じサーバーで使用されている可能性のある他のチームのアプリがいくつかあるため、サーバーでIISをリセットするのは嫌です。

15
Rich

これは、デフォルトでCodeFileであり、ビルドアクションの変更を許可しないWeb Applicationプロジェクトとは対照的に、Web Siteプロジェクトに適用されます。 。

ASP.NET Web Applicationsには、ページを展開する2つの方法があります。 CodeFileおよびCodeBehind。デフォルトでは、ページは常にCodeBehindを使用しますが、これは変更できます。

CodeBehind

CodeBehindは、.csファイルをbinフォルダー内の.dllファイルにコンパイルしますコンパイル/ビルド時次に、それをWebサーバーにデプロイします。 .csファイルをWebサーバーにデプロイする必要はありません。そうした場合、それは未使用のままそこに座っているだけです。

CodeBehindを使用してページを構成するには、次のことを確認してください。

  • .aspxファイルのページディレクティブにはCodeBehind="your.aspx.cs"があります
  • ソリューションエクスプローラーの.csファイルと.designer.csファイルのプロパティには、compilebuild-actionがあります。

CodeFile

これにより、ASP.NETは.csファイルをオンザフライでコンパイルしますサーバー上で。これは、.csファイルをWebサーバーにデプロイする必要があることを意味します。また、.csファイルはコンパイル/ビルド時にコンパイルされないため、binフォルダーの.dllに組み込まれません。

主な利点

CodeFileを使用すると、.csファイルに変更を加えてデプロイすることができますそのファイルのみ本番Webサーバーでの変更を確認できます。再デプロイする必要はありません。アプリプールをリサイクルする必要はありません。これは、多くの状況で非常に役立ちます。

CodeFileを使用してページを構成するには、次のallが満たされていることを確認してください。

  • .aspxファイルのページディレクティブにはCodeFile="your.aspx.cs"があります
  • ソリューションエクスプローラーの.csファイルのプロパティには、contentbuild-actionがあります。
  • ソリューションエクスプローラーの.designer.csファイルのプロパティには、nonebuild-actionがあります。

ノート

  • Intellisenseは、ページがCodeFileで設定されている場合の作業を好みません(ただし、コーディング中にCodeBehindに変更してから、展開のために元に戻すことができます)。
  • CodeBehindからCodeFileに変更する場合は、常に再構築と再デプロイを行います(またはその逆)。これは、ページがCodeBehindの場合、.csがbinフォルダーの.dllにコンパイルされ、CodeFileに変更してもそこに残るためです。 CodeFileはオンザフライでコンパイルされ、オン-の.dllおよびで定義されたものと同じコード/クラスを取得します。 the-flyでコンパイルされたコード。ランタイムエラーが発生します。
34
theyetiman

私が使用するセットアップでは、プロジェクトのビルド時に.csファイルがコンパイルされます。つまり、変更する必要があるのは、.csファイルではなく、ビン内の.dllです。

.aspxファイルはいつでも変更できますが、コードビハインドを有効にするには、プロジェクトを再構築する必要があると思います。

以前は問題なく単一の.dllを置き換えました(ただし、これは良い習慣ではありません)。

0
HockeyJ

どうやらあなたがしたことはうまくいくはずです。キャッシュが実装されているかどうかを確認します。それ以外の場合は、コードを公開して、.csファイルの代わりにdllをデプロイします。稼働する前に、ステージングサーバーでテストすることをお勧めします。

0
gokul