gpt4 book ai didi

c# - 使用 CodeDomProvider 编译不允许 C# 或 VB 的新功能

转载 作者:太空狗 更新时间:2023-10-29 20:58:03 24 4
gpt4 key购买 nike

我正在使用 CodeDomProvider、CompilerInfo 和 CompilerParameters 在运行时编译一些 C# 和 VB 代码。它工作得很好,我真的很喜欢能够为我的应用程序添加脚本支持,但它似乎只支持 .NET 2.0 语法。例如,C# 不支持 var 关键字,VB 不支持 If(bool, string, string) 表达式。

如何让它以 3.5 框架为目标?

最佳答案

好的,我在这里从 Anders Norås 找到了一个很大的提示CSharpCodeProvider 构造函数有一个构造函数,它接受一些选项,包括编译器版本。当我检查 MSDN docs ,我发现在 App.config 文件中指定编译器选项更清晰。这是一个例子:

<system.codedom>
<compilers>
<compiler
language="vb;vbs;visualbasic;vbscript"
extension=".vb"
type="Microsoft.VisualBasic.VBCodeProvider, System,
Version=2.0.3600.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"
compilerOptions="/optimize"
warningLevel="1" >
<providerOption
name="CompilerVersion"
value="v3.5" />
</compiler>
<compiler
language="c#;cs;csharp"
extension=".cs"
type="Microsoft.CSharp.CSharpCodeProvider, System,
Version=2.0.3600.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"
compilerOptions="/optimize"
warningLevel="1" >
<providerOption
name="CompilerVersion"
value="v3.5" />
</compiler>
</compilers>
</system.codedom>

唯一令我失望的是,现在我从 CodeDomProvider.GetAllCompilerInfo() 获得了每个编译器的两个版本。配置文档说 App.config 应该覆盖 machine.config 设置,但我都得到了。到目前为止,App.config 总是在 machine.config 之后,所以我只是让后面的覆盖前面的。有人知道如何避免重复吗?

关于c# - 使用 CodeDomProvider 编译不允许 C# 或 VB 的新功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/379818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com