Это далеко, но я постараюсь объяснить проблему как можно лучше.Я использую компилятор CodeDom в .Net 3.5 для компиляции 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 ... у него есть некоторые проблемы с "частичной пустотой".
Я нашелпроблема, очень похожая на эту, здесь 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 будет иметь проблемы с частичными пустотами?