web-dev-qa-db-ja.com

CodeFile vs CodeBehind

ASP.Netユーザーコントロールの宣言におけるCodeFile= "file.ascx.cs"とCodeBehind= "file.ascx.cs"の違いは何ですか?

1つは新しいですか、または推奨されますか?または、特定の用途がありますか?

133
Soldarnal

CodeBehind:コンパイルする必要があります(ASP.NET 1.1モデル)。コンパイルされたバイナリは、Webサイトのbinフォルダーに配置されます。展開する前に、Visual Studioでコンパイルを行う必要があります。ソースコードをプレーンテキストとして表示したくない場合に適したモデルです。たとえば、コードを提供する義務のない顧客に配送する場合。

CodeFile:展開用のソリューションをソースファイルに提供します。 ASP.NET 2.0ランタイムは、必要なときにコードをコンパイルします。コンパイルされたファイルは、Microsoft.NET [.NETバージョン]\Temporary ASP.NET Filesにあります。

160
Shafqat Ahmed

私は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でプロジェクトとしてアプリケーションを開いたときにのみ発生します。

5
DavidHyogo

分離コードファイルは実行前にコンパイルする必要がありますが、srcではコンパイルしてから実行する必要はありません。ファイルを保存するだけです。

5
Ranjeet Prasad