ソリューションには、リリース、デバッグ、カスタムの3つのビルド構成があります。また、 WebSite(はい、WebApplicationではありません)プロジェクトタイプがあります。既定では、WebSiteを作成すると、VisualStudio2008は次のセクションをソリューションファイルに追加します。
Debug.AspNetCompiler.VirtualPath = "/MyWebSite"
Debug.AspNetCompiler.PhysicalPath = "MyWebSite\"
Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\MyWebSite\"
Debug.AspNetCompiler.Updateable = "false"
Debug.AspNetCompiler.ForceOverwrite = "true"
Debug.AspNetCompiler.FixedNames = "false"
Debug.AspNetCompiler.Debug = "True"
Release.AspNetCompiler.VirtualPath = "/MyWebSite"
Release.AspNetCompiler.PhysicalPath = "MyWebSite\"
Release.AspNetCompiler.TargetPath = "PrecompiledWeb\MyWebSite\"
Release.AspNetCompiler.Updateable = "false"
Release.AspNetCompiler.ForceOverwrite = "true"
Release.AspNetCompiler.FixedNames = "false"
Release.AspNetCompiler.Debug = "False"
SlnRelativePath = "\MyWebSite\"
この構成は、MSBuildがWebサイトをプリコンパイル/公開するために使用されます。ご覧のとおり、「カスタム」ビルド構成の構成はなく、「リリース」と「デバッグ」のみです。そのため、MSBuildと「カスタム」ビルド構成を使用してソリューションをビルドしようとすると、Webサイトがコンパイルされません。
しかし、ソリューションファイルに次の行を手動で追加すると、すべてが期待どおりに機能します。:
Custom.AspNetCompiler.VirtualPath = "/MyWebSite"
Custom.AspNetCompiler.PhysicalPath = "MyWebSIte\"
Custom.AspNetCompiler.TargetPath = "PrecompiledWeb\MyWebSite\"
Custom.AspNetCompiler.Updateable = "false"
Custom.AspNetCompiler.ForceOverwrite = "true"
Custom.AspNetCompiler.FixedNames = "false"
Custom.AspNetCompiler.Debug = "True"
これはVisualStudio2008のバグだと思います(2010年に確認しました)。問題は、VisualStudio 2008がソリューションファイルを変更するときに(たとえば、新しいプロジェクトを追加する場合)、手動で追加した行が削除されることです。たぶん、どこかでMicrosoft VS開発チームにバグを提出する必要がありますか?
他の誰かが同じ問題を抱えていて、それを解決する方法について何か提案があったら?ありがとう!