Using the C# code provider and the ICodeCompiler.CompileAssemblyFromSource
method, I am attempting to compile a code file in order to produce an executable assembly.
The code that I would like to compile makes use of features such as optional parameters and extension methods that are only available when using the language C# 4.
Having said that, the code that I would like to compile only requires (and needs) to target version 2.0 of the .NET Framework.
Using the proceeding code it is possible to avoid any compile-time errors pertaining to syntax however, the resulting assembly will target version 4.0 of the framework which is undesirable.
var compiler = new CSharpCodeProvider(
new Dictionary<string, string> { { "CompilerVersion", "v4.0" } } );
How can I make is so that the code provider targets language version 4.0 but produces an assembly that only requires version 2.0 of the framework?
CompilerParameters
when you later compile, and specifically passing a set of assemblies which match the framework you are trying to target? – HyponastyCompilerOptions
property to pass/nostdlib+ /noconfig
(in additional to passing the right version of the system assemblies). See blogs.msdn.com/b/ed_maurer/archive/2010/03/31/… – Hyponasty