我想使用Microsoft.CSharp.CSharpCodeProvider类来编译C#7.3代码。编译器版本在IDictionary中指定,在创建新的CSharpCodeProvider时将其作为输入;例如,{“CompilerVersion”,“v4.0”}。 “v4.0”是不够的,因为它不能将v7.3识别为编译器选项。
答案 0 :(得分:3)
较新的编译器版本不再作为.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。