为什么我不能在运行时添加.NET DLL

时间:2012-06-04 19:55:54

标签: c# codedom

使用CodeDOM我有这样的事情:

CompilerParameters parameters = new CompilerParameters();
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
parameters.ReferencedAssemblies.Add("System.Data.Linq.dll");
parameters.ReferencedAssemblies.Add("System.Xml.Linq.dll");
parameters.ReferencedAssemblies.Add("System.Core.dll");

当我运行程序时,这是我得到的最后三个DLL的错误,前两个(System.DLL和System.Windows.Forms.DLL)没有问题和错误,但是一旦我添加最后三行加载那些DLL,然后我得到错误,如图中的那个。 如此奇怪和烦人,无法找到解决方法。

感谢。

enter image description here

1 个答案:

答案 0 :(得分:0)

哇哦哇!这很棘手!

它不关心Visual Studio设置的目标平台是什么,它所看到的是它自己的 CodeProvider 类。以前我使用的是default constructor。但它还有另一个构造函数,它接受一个Dictionary参数。在此参数中,我们指定应使用的.NET版本。因此,我不应该只创建一个新的CodeProvider对象,而应该这样做:

    Dictionary<string, string> compilerInfo = new Dictionary<string, string>();
    compilerInfo.Add("CompilerVersion", "v3.5");
    CSharpCodeProvider codeProvider = new CSharpCodeProvider(compilerInfo);

现在它有效。