当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《使用CodeDomProvider进行编译不允许使用C#或VB的新功能》经验,为你挑选了2个好方法。

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

我怎么能告诉它以3.5框架为目标?



1> Don Kirkby..:

好的,我从AndersNorås那里得到了一个很大的提示,即CSharpCodeProvider构造函数的构造函数需要一些选项,包括编译器版本.当我检查MSDN文档时,我发现在App.config文件中指定编译器选项更清晰.这是一个例子:


  
    
      
    
    
      
    
  

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



2> Cwoo..:

不确定你在app.config的位置,但是你怎么能告诉它使用3.5框架.

var csc = new CSharpCodeProvider(new Dictionary() { { "CompilerVersion", "v3.5" } });

http://blogs.msdn.com/lukeh/archive/2007/07/11/c-3-0-and-codedom.aspx

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有