.NET 3.5 CodeDom编译器生成奇数错误
-
27-09-2020 - |
题
这是一个远方的延伸,但我将尽可能地尝试解释这个问题。我正在使用.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中的代码行
部分void onidchanged();
但是,如果将这3个文件包含在新的VS2010项目中并通过该编译器编译,则它们正常工作....此错误仅与CodeDom编译器一起发生......它与“部分void”有一些问题。 。我发现了一个非常相似的问题 http://社交.msdn.microsoft.com /论坛/ en-US / LinqProject一般/线/线/ 85E085C8-B6AC-4CAE-B59D-7B9CE7758122 /
但是,这种修复不起作用,因为我使用的代码编译器而不是编译器....解决方案
问题解决了!
在我看来仍然很奇怪,但在.NET 3.5下默认情况下的CodeDom编译器想要使用.NET 2 CSC.exe编译器....这导致与我的CS文件发生冲突。
必须指定编译器版本
var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
.
一个衬里解决了我的所有问题。
不隶属于 StackOverflow