使用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,然后我得到错误,如图中的那个。 如此奇怪和烦人,无法找到解决方法。
感谢。
答案 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);
现在它有效。