標籤:自動 項目 option 安裝 c# vbs 作者 tool mic
Generic
連結:https://www.zhihu.com/question/48864375/answer/113316462
來源:知乎
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
造成這個問題的原因是微軟沒有為使用.NET Framework 4.6.1的http://ASP.NET Empty Web Site模板建立的網站啟用C# 6支援,而且“網站”不像“應用程式項目”一樣可以在“項目屬性-產生-進階”視窗中設定語言版本,所以當使用C# 6文法時,給出提示:
功能“XXX”在C# 5中不可用。請使用語言版本6或更高版本。
<img src="https://pic1.zhimg.com/50/ef29893180be89925650df1ff654805d_hd.jpg" data-rawheight="392" data-rawwidth="964" class="origin_image zh-lightbox-thumb" width="964" data-original="https://pic1.zhimg.com/ef29893180be89925650df1ff654805d_r.jpg">可以通過安裝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>
這時候C# 6便可以使用了。
&amp;lt;img src="https://pic1.zhimg.com/50/d9a7fd775d69934518d46f30b2211a00_hd.jpg" data-rawheight="390" data-rawwidth="744" class="origin_image zh-lightbox-thumb" width="744" data-original="https://pic1.zhimg.com/d9a7fd775d69934518d46f30b2211a00_r.jpg"&amp;gt;正常情況下應該沒有問題了。不過,產生網站的時候,還可能會遇到另外一個問題,提示:
未能找到檔案“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
把這個檔案夾中的檔案全部複製過去就行了。
如何在ASP.NET 網站項目中使用C# 6?