c# - 哪个 C# 编译器版本可以使用 CSharpCodeProvider 类编译 C# 7.3?

标签 c# csharpcodeprovider

我想使用 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/

相关文章:

c# - WPF MVVM 与 EF CodeFirst

c# - 当 ItemsSource 与 ResourceDictionaries 或 MergedDictionaries 一起使用 setter 属性时,MenuItem 样式

c# - 使用 CSharpCodeProvider 时出现运行时错误程序集 'System.Runtime'

c# - linq 中等效的 SQL 限制

c# - C#.Net 中的连接字符串

c# - Linq:获取值存在于另一个表中的行

c# - 即时从字符串编译 Func<T1, TResult>

c# - 如何动态运行 C# 项目

c# - Resx 文件并嵌入程序集

c# - 从内存中释放 CSharpCodeProvider 生成的代码