ScottGuのブログ投稿のコメントから取られた可能な解決策(ページで「8026」を検索):
ソリューションの提案1(David Taylor)
これらのRTMコードdom要素をweb.configに追加します。
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
次に、RoslynおよびMicrosoft.CodeDom.Providers。*。dllのものをBINディレクトリに追加します。
設定は簡単ですが、VS 2015 RTMで新しい「Webサイト」を作成するときに.NET 4.6を選択した場合、デフォルトのテンプレートが設定されていなかったのは不思議でした。
解決策の提案2(Martin)
上記のDavid Taylorのコメントに加えて、TargetFrameworkをデフォルトのv4.5.2としてWebアプリを作成すると、system.codedom設定が正しいようです。TargetFrameworkをv4.6に変更すると、CSharpのコンパイラ設定が変更され、問題が発生する可能性があります。
私の回避策は次のとおりです。
- ファイル/新規/ASP.NET Webアプリケーション
- ASP.NET 4.5.2テンプレートから「Web API」テンプレートを選択します
- web.configのsystem.codedom要素(およびその内容)のコピーを取得します
- Properties / TargetFrameworkを使用して、Target Frameworkを4.6に設定します
- web.configの変更されたsystem.codedom要素を、TargetFrameworkを変更する前に取得したコピーで置き換えます。
- ヒット F5
ホームページは期待どおりに読み込まれるはずです。
参考までに、TargetFrameworkをv4.6に変更した直後のsystem.codedomの内容。次のとおりでした(Type "Microsoft.CSharp.CSharpCodeProvider"の使用に注意してください):
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">
<providerOption name="CompilerVersion" value="v4.0"/>
</compiler>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>