使用 C# 代码提供程序以及 ICodeCompiler.CompileAssemblyFromSource
方法,我正在尝试编译一个代码文件以生成可执行的程序集。
我想要编译的代码使用了一些仅在使用 C# 4 语言时才可用的功能,例如可选参数和扩展方法。
尽管如此,我想要编译的代码仅需要(且需要)针对 .NET Framework 的 2.0 版本进行编译。
使用上述方法可以避免任何与语法相关的编译时错误,但是生成的程序集将针对不希望使用的框架版本 4.0 进行编译。
var compiler = new CSharpCodeProvider(
new Dictionary<string, string> { { "CompilerVersion", "v4.0" } } );
我如何使代码提供者针对语言版本4.0,但生成的程序集仅需要框架版本2.0?
CompilerParameters
,并明确传递一组与你要针对的框架匹配的程序集吗? - Ben VoigtCompilerOptions
属性来传递/nostdlib+ /noconfig
(除了传递正确版本的系统程序集)。请参阅http://blogs.msdn.com/b/ed_maurer/archive/2010/03/31/multi-targeting-and-the-c-and-vb-compilers.aspx。 - Ben Voigt