0

使用 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 的行,然后我得到像图片中的错误。如此奇怪和烦人,找不到解决方法。

谢谢。

在此处输入图像描述

4

1 回答 1

0

哦哇!这很棘手!

它不关心 Visual Studio 设置的 Target Platform 是什么,它看的是它自己的CodeProvider类。以前我使用它的默认构造函数。但它也有另一个接受 Dictionary 参数的构造函数。在此参数中,我们指定应使用的 .NET 版本。因此,我应该这样做,而不是仅仅创建一个新的 CodeProvider 对象:

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

现在它起作用了。

于 2012-06-04T21:47:38.713 回答