使用CSharpCodeProvider类编译C# 7.3需要哪个C#编译器版本?

6

我希望使用Microsoft.CSharp.CSharpCodeProvider类来编译C# 7.3代码。当创建新的CSharpCodeProvider时,编译器版本是在作为输入接受的IDictionary中指定的;例如,{ "CompilerVersion", "v4.0" }。“v4.0”不足够,因为它无法识别v7.3作为编译器选项。

1个回答

10
较新的编译器版本不再作为.NET Framework本身的一部分发行,因此不能通过遗留的CodeDOM API(其中包括Microsoft.CSharp.CSharpCodeProvider)默认访问。
如果您希望使用较新的编译器与CodeDOM API,请使用Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider,它是Microsoft.CSharp.CSharpCodeProvider的子类。该类可在Microsoft.CodeDom.Providers.DotNetCompilerPlatform nuget软件包中获得。
对于非Web应用程序,您还需要提供一个配置或环境变量,以提供您想要使用的C#编译器的路径(该副本在nuget软件包中提供,因此您可以使用它)。有关详情,请参见https://github.com/aspnet/RoslynCodeDomProvider

对于 web.config 文件,compiler language="c#;cs;csharp" 是什么意思? - Kiquenet
1
@Kiquenet 当您添加NuGet包时,它通常会运行PowerShell脚本来更新web.config。如果没有,请使用以下内容:<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=3.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:7.0 /nowarn:1659;1699;1701;612;618" />。当然,如果需要,您可以进行调整。 - Kevin Cathcart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接