如果我没有使用CSharpCodeProvider指定CompilerVersion,为什么大多数样本都指定它,会发生什么?

时间:2013-10-16 09:59:49

标签: c# .net csharpcodeprovider

使用CSharpCodeProvider传递CompilerVersion参数的典型代码示例。代码from here

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

我试图传递一个空字典,并试图调用CSharpCodeProvider的无参数构造函数,结果是一样的。

那么如果我没有指定`CompilerVersion,会在内部发生什么?为什么大多数样品始终指定它?

1 个答案:

答案 0 :(得分:2)

文档说明它是从框架配置文件夹中指定的machine.configweb.config获取的。

例如,我的Framework64 / config / web.config文件包含:

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