VS2015新增了對C#6的支持.
在新的Web項目模板中通過引入nuget包Microsoft.CodeDom.PRoviders.DotNetCompilerPlatform:1.0.0并在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;vbscr來提供Razor的C#6.0支持(舊項目也可以通過自己添加來獲得支持)
但是在當你修改了目標框架(例如從4.5升級到4.6)之后, 網站將會無法開啟并提示
“/”應用程序中的服務器錯誤。編譯錯誤說明:在編譯向該請求提供服務所需資源的過程中出現錯誤。請檢查下列特定錯誤詳細信息并適當地修改源代碼。編譯器錯誤消息:CS1617: 選項“6”對 /langversion 無效;必須是 ISO-1、ISO-2、3、4、5 或 Default源錯誤:
|
查看web.config中的配置, 發現已被自動修改為(似乎一般是改cs不改vb, 往低了改會連vb一起改)
<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.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=/"Web/" /optionInfer+"> <providerOption name="CompilerVersion" value="v4.0"/> </compiler> </compilers> </system.codedom>
而這是無法正常工作的, 需要手動修改為最初的結果
已反饋至https://connect.microsoft.com/VisualStudio/feedback/details/1607466
2015/07/31: 微軟已確認
新聞熱點
疑難解答