我正在尝试使用CodeDom.Compiler来动态编译源代码,这意味着我需要手动引用基本程序集。我正在编译的源代码必须能够访问基本的列表扩展方法,例如,Max(),Min()或Sum(),以及可能的lambda表达式。
当我编译源代码时,它说我缺少所需的程序集...目前我包含System.dll和System.Core.dll。
我需要哪个dll才能获得泛型的扩展方法?
答案 0 :(得分:8)
看看这个blog post。您必须在调用CSharpCodeProvider
constructor that receives a dictionary时手动指定编译器版本。像这样:
var provider = new CSharpCodeProvider(new Dictionary<string, string>{
{"CompilerVersion", "v3.5"} });
答案 1 :(得分:0)
通过这种类型的麻烦的简单方法是查看Assembly.GetReferencedAssemblies(),并以这种方式添加对编译器的引用。然后你知道只要您的编译器在Visual Studio中编译,任何使用这些功能的代码都将使用您的编译器进行编译。