What happens if I don't specify CompilerVersion with CSharpCodeProvider and why do most samples specify it?

StackOverflow https://stackoverflow.com/questions/19400394

  •  30-06-2022
  •  | 
  •  

Question

Typical code samples using CSharpCodeProvider pass CompilerVersion parameter. Code from here:

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

I've tried to pass an empty dictionary and also tried to call the parameterless constructor of CSharpCodeProvider and the result is the same.

So what happens internally if I don't specify `CompilerVersion? Why do most samples specify it at all times?

Was it helpful?

Solution

The documentation states that it gets it from either the machine.config or the web.config specified in your framework config folder.

For example, my Framework64/config/web.config file contains this:

<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
        <providerOption name="CompilerVersion" value="v4.0"/>
        <providerOption name="WarnAsError" value="false"/>
    </compiler>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top