如何在ASP.NET 網站項目中使用C# 6?


作者:Generic
鏈接:https://www.zhihu.com/question/48864375/answer/113316462
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

造成這個問題的原因是微軟沒有為使用.NET Framework 4.6.1的 Empty Web Site模板創建的網站啟用C# 6支持,而且“網站”不像“應用程序項目”一樣可以在“項目屬性-生成-高級”窗口中設置語言版本,所以當使用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=\&quot;Web\&quot; /optionInfer+"/>
  </compilers>
</system.codedom>
這時候C# 6便可以使用了。
正常情況下應該沒有問題了。不過,生成網站的時候,還可能會遇到另外一個問題,提示:
未能找到文件“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
把這個文件夾中的文件全部復制過去就行了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM