如安在ASP.NET 网站项目中使用C# 6?

时间:2021-12-29 03:33:40

作者:Generic
链接:https://www.zhihu.com/question/48864375/answer/113316462
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明来由。

造成这个问题的原因是微软没有为使用.NET Framework 4.6.1的ASP.NET Empty Web Site模板创建的网站启用C# 6撑持,而且“网站”不像“应用措施项目”一样可以在“项目属性-生成-高级”窗口中设置语言版本,所以当使用C# 6语法时,给出提示:
成果“XXX”在C# 5中不成用。请使用语言版本6或更高版本。 <img src="http://www.mamicode.com/https:/pic1.zhimg.com/50/ef29893180be89925650df1ff654805d_hd.jpg" data-rawheight="392" data-rawwidth="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=\&quot;Web\&quot; /optionInfer+"/> </compilers> </system.codedom>

这时候C# 6便可以使用了。
&amp;amp;lt;img src="http://www.mamicode.com/https:/pic1.zhimg.com/50/d9a7fd775d69934518d46f30b2211a00_hd.jpg" data-rawheight="390" data-rawwidth="744" data-original="https://pic1.zhimg.com/d9a7fd775d69934518d46f30b2211a00_r.jpg"&amp;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

把这个文件夹中的文件全部复制过去就行了。