CSharpCodeProvider输出从.NET 4.0应用程序输出.NET 2.0程序集

问题描述:

我正在使用CSharpCodeProvider将CodeDom对象编译为程序集。应用程序本身在.NET 4.0下运行。不过,我需要CompileAssemblyFromDom的输出来针对.NET 2.0构建,以便与一些外部资源兼容。我如何告诉CSharpCodeProvider构建对.NET 2.0?CSharpCodeProvider输出从.NET 4.0应用程序输出.NET 2.0程序集

您可以通过采用providerOptions(IDictionary)参数的CSharpCodeProvider构造函数提供编译器版本作为选项。如果您使用CodeDomProvider.CreateProvider,则可以使用其类似的重载。例如:

using (CodeDomProvider provider = CodeDomProvider.CreateProvider(
    "CSharp", 
    new Dictionary<string, string>() { { "CompilerVersion", "v2.0" } })) 
{ 
    //... 
} 

编译器版本也可以通过配置文件指定。有关详细信息和示例,请参阅http://msdn.microsoft.com/en-us/library/bb537926.aspx