这是一个很长的范围,但我将尝试尽可能地解释这个问题。我正在使用 .Net 3.5 中的 CodeDom 编译器来编译 3 个 cs 文件...其中 2 个是从 Edmgen.exe 生成的,1 个是动态生成的文件。编译代码如下所示
CompilerResults results = compiler.CompileAssemblyFromFileBatch(parameters, new string[]{string.Format("{0}\\Dynamic.cs", Directory.GetCurrentDirectory()),
string.Format("{0}\\{1}.ObjectLayer.cs", Directory.GetCurrentDirectory(), ModelName), string.Format("{0}\\{1}.Views.cs", Directory.GetCurrentDirectory(), ModelName)});
当所有这三个文件一起编译时,我收到此错误
类、结构或接口成员声明中的无效标记“void”
我假设这个错误是指位于 ObjectLayer.cs 中的这行代码
部分无效 OnIDChanged();
但是,如果将这 3 个文件包含在一个新的 VS2010 项目中并通过该编译器进行编译,它们可以正常工作....此错误仅发生在 CodeDom 编译器中...“部分无效”存在一些问题。
我在这里发现了一个与此非常相似的问题 http://social.msdn.microsoft.com/forums/en-US/linqprojectgeneral/thread/85e085c8-b6ac-4cae-b59d-7b9ce7758122/
但是该修复不起作用,因为我使用的是 CodeDom 编译器而不是 VS 编译器....
我还想指出,我已经尝试过 .Net 3.5 命令行编译器 (csc.exe),而且效果也很好。而且我还在.Net 4下测试了这个确切的代码,它也可以工作。这个问题似乎只出现在 .net 3.5 下
任何人都遇到过这个问题或知道为什么 .Net 3.5 CodeDom 编译器会出现部分空洞问题?