无法将system.dll引用添加到动态编译的C#.NET代码中

时间:2011-08-23 14:44:59

标签: c# .net windows reference

我正在尝试使用CSharpCodeProvider接口动态编译代码,以便在运行时动态编译代码,以便根据此http://www.codeproject.com/KB/cs/codecompilation.aspx文章对我的应用程序进行脚本编写,它在VS2010中编译没有任何问题(仅关于ICodeCompiler被弃用的警告) ,但我尝试了两种方法:忽略警告并保留代码原样,并根据MSDN推荐更改代码 - 两种方式都不起作用),但在运行时我得到一个动态代码的编译器错误告诉我,我忘了要添加对System.dll的引用,并根据下面的代码,我不知道如何忘记这样做:

        cp.ReferencedAssemblies.Add("mscorlib.dll");
        cp.ReferencedAssemblies.Add("System.dll");
        //cp.ReferencedAssemblies.Add("System.dll");
        cp.ReferencedAssemblies.Add("System.Data.dll");
        cp.ReferencedAssemblies.Add("System.Xml.dll");
        cp.ReferencedAssemblies.Add("mscorlib.dll");
        cp.ReferencedAssemblies.Add("System.Windows.Forms.dll");
        cp.ReferencedAssemblies.Add("App.exe");

有趣的是,如果我重复添加system.dll(注释行)的行,我会收到一条错误,告诉我System.dll是双引用的。任何想法都是关于什么的?还值得一提的是,codeproject中的示例可以正常工作,而这段代码只是该示例中的一个副本而根本没有任何变化。我发现该示例使用.NET 2.0与VC#2005编译器一起使用,而VS2010默认使用.NET 4.0,因此尝试更改它但没有用。欢迎提供任何帮助。

提前致谢..

1 个答案:

答案 0 :(得分:0)

删除两行cp.ReferencedAssemblies.Add("mscorlib.dll");