リリース時のVisual Studio 2005でのASP.NET開発は、Web Site Projectを用いていましたが、SP1にはWeb Application Projectが標準追加されました。
Web Site Project †
- Visual Studio 2005からの新形式
- フォルダ(またはaspx)単位で、複数のDLLが生成される。
- Webアプリケーション全体を再コンパイルしたり再転送することなく、コンポーネント毎にアップデートできる。
- プロジェクトファイル(*.csproj等)やAssemblyInfo.csがない。
- .aspxに対して、.aspx.csのみが付随する。
- FxCopや.Testでは解析できないようだ。DevPartnerは一応解析可能だが…。
Web Application Project †
- MSDN
- Scott Guthrie氏のWebサイト
- Visual Studio 2003でのASP.NET開発とほぼ同じ。
- プロジェクトファイル(*.csproj等)やAssemblyInfo.csがあり、プロジェクト1つに対して1つのDLLがビルドされる等、通常のC#プロジェクトと同様に扱える。
- .aspxに対して、.aspx.csと.aspx.designer.csの2ファイルが作成される。
- 静的コード解析ツール等も実施可能。
Web Site → Web App 変換 †
- Scott Guthrie氏のWebサイト が参考になる。
- 基本的には、Web Site Project内の必要なファイルをWeb Application Projectにコピーして、Visual Studioから[Webアプリケーションに変換]処理を実施するだけで問題ない。
- Web Siteでは許されていた記述ルールが、Web Appでは許可されずビルドできないことがある。ソースコードを見直すべき。
- Web Site ProjectでASP名前空間に属する型(ユーザーコントロール等)を利用していた場合、Web Site Projectでは利用できない。自動生成される内部クラス型ではなく、公開されたクラス型を利用するように変更すべき。
- ASP名前空間をusingしていれば、それもビルドエラーになる。
- partial classとして同じ名前空間.クラス名で定義されているクラス内で、同じ名称のフィールド、プロパティ、メソッドが存在する場合、ビルドエラーになる。Web Site Projectの場合はエラーにならない。むしろ、そちらが不自然。
- web.configに登録されているユーザーコントロールが、aspxで再登録されていた場合、ビルドエラーになる。Web Site Projectの場合はエラーにならない。登録箇所をどちらかに寄せるべき。