作者:Generic
鏈接:https://www.zhihu.com/question/48864375/answer/113316462
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
鏈接:https://www.zhihu.com/question/48864375/answer/113316462
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
造成這個問題的原因是微軟沒有為使用.NET Framework 4.6.1的
http://ASP.NET Empty Web Site模板創建的網站啟用C# 6支持,而且“網站”不像“應用程序項目”一樣可以在“項目屬性-生成-高級”窗口中設置語言版本,所以當使用C# 6語法時,給出提示:
可以通過安裝Microsoft.CodeDom.Providers.DotNetCompilerPlatform程序包解決:
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform安裝好這個程序包后,會自動在Web.config文件中的configuration節點下添加如下節點:
這時候C# 6便可以使用了。
正常情況下應該沒有問題了。不過,生成網站的時候,還可能會遇到另外一個問題,提示:
把這個文件夾中的文件全部復制過去就行了。
功能“XXX”在C# 5中不可用。請使用語言版本6或更高版本。
可以通過安裝Microsoft.CodeDom.Providers.DotNetCompilerPlatform程序包解決:
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform安裝好這個程序包后,會自動在Web.config文件中的configuration節點下添加如下節點:
<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>
正常情況下應該沒有問題了。不過,生成網站的時候,還可能會遇到另外一個問題,提示:
未能找到文件“XXX\bin\roslyn\csc.exe”。出現這個問題可能是因為VS沒有把Roslyn的編譯器正確地放到網站Bin文件夾的roslyn文件夾中。這時候可以從Nuget程序包文件夾中復制Roslyn編譯器到網站的Bin/roslyn文件夾中。Nuget程序包文件夾一般與.sln解決方案文件在同一個目錄下。Roslyn編譯器在Nuget文件夾中的路徑是:
packages\Microsoft.Net.Compilers.1.0.0\tools
