Pregunta

Este es un estiramiento mucho, pero voy a intentar explicar el problema lo mejor posible. Estoy usando el compilador CODEDOM en .NET 3.5 para compilar los archivos de 3 CS ... 2 de los cuales se generaron de Edmgen.exe y 1 es un archivo generado dinámicamente. El código de compilación se ve así

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)});

Cuando los tres de estos archivos se compilan juntos, recibo este error

Token no válido 'Void' en la Declaración de miembros de clase, estructura o interfaz

Supongo que este error se refiere a esta línea de código ubicada en el ObjectLayer.cs

Void parcial OnidChanged ();

Sin embargo, si estos 3 archivos se incluyen en un nuevo proyecto VS2010 y se compilan a través de ese compilador, funcionan bien .... Este error solo ocurre con el compilador Codedom ... está teniendo algún problema con "Vacío parcial" .

He encontrado un problema muy similar a esto aquí http:// social .msdn.microsoft.com / Forums / EN-EEUU / LINQProjectGeneral / Thread / 85E085C8-B6Ac-4Cae-B59D-7B9CE7758122 /

Sin embargo, esa solución no funciona porque estoy usando el compilador CODEDOM, NO VS compilador ...

También me gustaría notar que he probado el compilador de línea de comandos .NET 3.5 (CSC.EXE) y esto también funcionó bien. Y también he probado este código exacto en .NET 4 que también funciona. Este problema solo parece subir debajo de .NET 3.5

¿Alguna persona se encuentra en esto o tenga una idea de por qué el compilador de CODEDOM de .NET 3.5 tendría un problema con los vacíos parciales?

¿Fue útil?

Solución

problema resuelto!

Esto sigue siendo muy extraño en mi opinión, pero en .NET 3.5 El compilador CODEDOM de forma predeterminada desea utilizar el compilador .NET 2 CSC.EXE .... Esto estaba causando conflictos con mis archivos CS.

Debe especificar la versión del compilador

var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });

que uno revestido resolvió todos mis problemas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top