如果我不使用 CSharpCodeProvider 指定 CompilerVersion 会发生什么情况,为什么大多数示
本文关键字:什么情况 为什么 大多数 CompilerVersion 指定 CSharpCodeProvider 如果 | 更新日期: 2023-09-27 18:35:31
使用CSharpCodeProvider
传递CompilerVersion
参数的典型代码示例。从这里开始的代码:
var codeProvider =
new CSharpCodeProvider(
new Dictionary<String, String> { { "CompilerVersion", "v3.5" } });
我尝试传递一个空字典,并尝试调用 CSharpCodeProvider
的无参数构造函数,结果是相同的。
那么如果我不指定"编译器版本",内部会发生什么?为什么大多数样本始终指定它?
文档指出它从框架配置文件夹中指定的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>