可能的解决方案,摘自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中创建新的“网站”时选择了.NET 4.6,则没有为其设置默认模板。
解决方案建议2(马丁)
除了上面的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,将目标框架设置为4.6
- 将web.config中修改后的system.codedom元素替换为更改TargetFramework之前的副本
- 击中 F5
主页应按预期加载。
有关信息,请在将TargetFramework更改为v4.6之后立即查看system.codedom的内容。如下所示(注意使用“ 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>