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
  •  | 
  •  

سؤال

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?

هل كانت مفيدة؟

المحلول

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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top