【发布时间】:2013-11-29 21:40:01
【问题描述】:
使用 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 版的程序集?
【问题讨论】:
-
您已经针对特定的 compiler 版本 - 您不知道如何针对特定的 framework 版本。我建议您相应地更新您的问题(尤其是标题)。
-
您是否尝试过在以后编译时指定
CompilerParameters,并专门传递一组与您尝试定位的框架匹配的程序集? -
您可能还需要使用
CompilerOptions属性来传递/nostdlib+ /noconfig(除了传递正确版本的系统程序集之外)。见blogs.msdn.com/b/ed_maurer/archive/2010/03/31/… -
哇...this question 提出了正确的问题,但所有答案都是错误的(指定语言版本和编译器,而不是框架)