我想使用 Microsoft.CSharp.CSharpCodeProvider 类来编译 C# 7.3 代码。编译器版本在创建新 CSharpCodeProvider 时作为输入的 IDictionary 中指定;例如,{ "CompilerVersion", "v4.0"}。 “v4.0”是不够的,因为它不能将 v7.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了解详情。
关于c# - 哪个 C# 编译器版本可以使用 CSharpCodeProvider 类编译 C# 7.3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50241006/