ASP.Netユーザーコントロールの宣言におけるCodeFile= "file.ascx.cs"とCodeBehind= "file.ascx.cs"の違いは何ですか?
1つは新しいですか、または推奨されますか?または、特定の用途がありますか?
CodeBehind:コンパイルする必要があります(ASP.NET 1.1モデル)。コンパイルされたバイナリは、Webサイトのbinフォルダーに配置されます。展開する前に、Visual Studioでコンパイルを行う必要があります。ソースコードをプレーンテキストとして表示したくない場合に適したモデルです。たとえば、コードを提供する義務のない顧客に配送する場合。
CodeFile:展開用のソリューションをソースファイルに提供します。 ASP.NET 2.0ランタイムは、必要なときにコードをコンパイルします。コンパイルされたファイルは、Microsoft.NET [.NETバージョン]\Temporary ASP.NET Filesにあります。
私はVisual Studio Express 2012 For Webでアプリケーションプロジェクトを使用し、.NET 4.0を使用しています。ログインページとパスワード変更ページのコードビハインドファイルで、宣言でCodeBehindとCodeFileの両方が必要な状況を見つけました。
次のようなコードファイル参照を追加しない場合
CodeFile=login.aspx.cs
Webページは解析されず、ブラウザーにパーサーエラーが表示されます。プロジェクトをコンパイルするかどうかは関係ありません。
次のような参照の背後にコードを追加しない場合
CodeBehind=login.aspx.cs
MembershipUserなどのセキュリティクラスへの参照は、コンパイル時と「IntelliSenseを使用しようとすると、「型または名前空間MembershipUserが見つかりません」などのエラーで失敗します。 .Net 4.0フレームワークの必要に応じて、System.Web.ApplicationServicesへの参照を追加しました。
これらの厄介なファイルは、IIS Applicationツールを使用して作成されたWebサイト内のアプリケーションで実行されています。VisualStudioからWebサイトを開くと、パーサーエラーまたは参照エラーに問題はありません。この混乱は、Visual Studioでプロジェクトとしてアプリケーションを開いたときにのみ発生します。
分離コードファイルは実行前にコンパイルする必要がありますが、srcではコンパイルしてから実行する必要はありません。ファイルを保存するだけです。