8

I'm using this snippet

CSharpCodeProvider codeProvider =
   new  CSharpCodeProvider(
      new Dictionary<String, String> { { "CompilerVersion", "v3.5" } });

for the 3.5 compiler for dynamic code compilation.

I'm assuming I should use "v4.0" to switch to the 4.0 compiler?

sharptooth
  • 167,383
  • 100
  • 513
  • 979
scope_creep
  • 4,213
  • 11
  • 35
  • 64

2 Answers2

4

Besides specifying "v4.0", you will need to add the reference "Microsoft.CSharp.dll" in order to use the "dynamic" keyword.

var codeProvider = new Microsoft.CSharp.CSharpCodeProvider(
new Dictionary<string, string> { { "CompilerVersion", "v4.0" } });
var parameters = new System.CodeDom.Compiler.CompilerParameters 
{
    GenerateInMemory = true,
    GenerateExecutable = false,
    IncludeDebugInformation = true,
    TreatWarningsAsErrors = false
};
// Here add more referenced assemblies
parameters.ReferencedAssemblies.Add("Microsoft.CSharp.dll");

Don't forget to compile the solution using the Framework 4.0+.

I hope this helps.

4

It is indeed v4.0

scope_creep
  • 4,213
  • 11
  • 35
  • 64