Domanda

Questo è un allungamento lontano ma cercherò una spiegazione il problema nel modo migliore possibile. Sto usando il compilatore CodeDom in .NET 3.5 per compilare 3 file CS ... 2 dei quali sono stati generati da edmgen.exe e 1 è un file generato dinamico. Il codice compile è simile a questo

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

Quando tutti e tre questi file sono compilati insieme, sto ricevendo questo errore

Token non valido 'Void' in classe, Struct o Interface Member Dichiarazione

Suppongo che questo errore si riferisca alla linea di codice situata nell'oggettoLlayer.cs

Void parziale onidchanged ();

Tuttavia, se questi 3 file sono inclusi in un nuovo progetto VS2010 e compilato attraverso quel compilatore che funzionano bene .... Questo errore si sta verificando solo con il compilatore CodeDom ... sta avendo qualche problema con "Void parziale" .

Ho trovato un problema molto simile a questo qui http:// sociale .msdn.microsoft.com / Forum / IT-US / LinqProjectGeneral / Thread / 85E085C8-B6AC-4CAE-B59D-7B9CE7758122 /

Tuttavia quella correzione non funziona perché sto usando il compilatore CodeDom non vs compilatore ....

Vorrei anche notare che ho provato il compilatore .NET 3.5 Commandline (CSC.exe) e questo ha funzionato anche bene. E ho anche testato questo codice esatto sotto .net 4 che funziona anche. Questo problema sembra solo venire sotto .NET 3.5

Qualcuno ha mai incontrato questo o ha un'idea perché il compilatore .NET 3.5 CodeDom avrebbe avuto un problema con vuoti parziali?

È stato utile?

Soluzione

Problema risolto!

Questo è ancora molto strano secondo me, ma sotto .net 3.5 il compilatore CodeDom per impostazione predefinita desidera utilizzare il compilatore .NET 2 csc.exe .... Questo stava causando conflitti con i miei file CS.

È necessario specificare la versione del compilatore

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

che uno foderato ha risolto tutti i miei problemi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top