3

CSharpCodeProvider使用passCompilerVersion参数的典型代码示例。来自这里的代码:

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

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

那么如果我不指定`CompilerVersion,内部会发生什么?为什么大多数样本总是指定它?

4

1 回答 1

2

文档说明它是从框架配置文件夹中指定的machine.config或指定的。web.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>
于 2013-10-16T10:16:48.703 回答