CodeFileとCodeBehind


138

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

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

回答:


163

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

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


2
では、これは開発者がPageディレクティブの属性を手動で変更する必要があることを意味しますか、または新しいWebページが追加されるたびに、デフォルトで分離コードまたはコードファイルを選択するWebプロジェクトを作成する方法はありますか?
— マットW

38
私が見ている方法では、CodeFileは「WebSite」に使用することを意図しており、「Codebehind」はコンパイルする必要があるため「Webアプリケーションプロジェクト」に使用することを意図しています。そのため、「Webサイト」を「Webアプリケーションプロジェクト」に変換するときに、すべてのCodeFileオカレンスを手動で分離コードに変更する必要がある場合があります。
— renegadeMind

2
CodeFilesは、ページを保存して更新した後、プロジェクトをビルドせずに変更をテストできるので、開発中に便利です。.csファイルと.vbファイルを本番サーバーにポストしたくない場合は、オプションで.Net 2+ CodeFileコンパイルモデルファイルをDLLとして「公開」できます。プロジェクトを公開するときに、オプションで「プリコンパイル」オプションを選択して、.aspxファイルと.cs / .vbファイルのいずれかまたは両方をDLLに変換できます。事実上、CodeBehindと同様です。
— スクラダム2017年

1
renegadeMindが指摘したように(また、その賛成投票から)、CodeFileが「website」タイプのソリューションに深くリンクされているのに対し、CodeBehindは「webアプリケーションプロジェクト」にリンクされているという事実を強調するように、応答を編集する必要があると思います。残念ながら私の編集は拒否されました。
— フレンチオーネ2018

3
コードビハインドがasp 1.1に関連付けられている一方で、コードファイルがasp.net 2.0にリンクされているという事実は、コードビハインドがそうでない場合にコードビハインドよりも「優れている」と考える可能性があります(これは正反対です。WebアプリケーションはWebサイトより優れています)
— フレンチオーネ

5

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


1
but in src-そうbut in the CodeFileですか
— Don Cheadle 2016年

5

Visual Studio Express 2012 For Webのアプリケーションプロジェクトで.NET 4.0を使用しています。ログインページとパスワード変更ページのコードビハインドファイルで、宣言にCodeBehindとCodeFileの両方が必要な状況を見つけました。

次のようなコードファイル参照を追加しない場合

CodeFile=login.aspx.cs

Webページが解析されず、ブラウザにパーサーエラーが表示されます。プロジェクトをコンパイルするかどうかは関係ありません。

のような参照の背後にあるコードを追加しない場合

CodeBehind=login.aspx.cs

MembershipUserなどのセキュリティクラスへの参照は、コンパイル時と、「型または名前空間MembershipUserが見つかりません」などのエラーでIntelliSenseを使おうとしたときに失敗します。.Net 4.0フレームワークの必要に応じて、System.Web.ApplicationServicesへの参照を追加しました。

これらの厄介なファイルが、IISアプリケーションツールを使用して作成されたWebサイト内のアプリケーションで実行されていることを付け加えておきます。Visual StudioからWebサイトを開くと、パーサーエラーや参照エラーは問題ありません。この混乱は、Visual Studioでプロジェクトとしてアプリケーションを開いたときにのみ発生します。


1
あなたがジョンの意味を知っています。そして、それは反対投票に値するかもしれませんが、私は現在、この問題に本当に苦労しています。たぶん、私の困難はこの違いからではなく、何か他のものから来ているのでしょう。しかし、受け入れられた答えは質問に答えますが、それは私が直面する実際的な問題の助けにはなりません。多分私は新しい質問を開く必要があります。
— DavidHyogo 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.