Domanda

Sto cercando di compilare dinamicamente il codice utilizzando CodeDom.Posso caricare altri assembly, ma non riesco a caricare System.Data.Linq.dll.Ottengo un errore:

Impossibile trovare il file di metadati "System.Data.Linq.dll".

Il mio codice è simile a:

CompilerParameters compilerParams = new CompilerParameters();
compilerParams.CompilerOptions = "/target:library /optimize";
compilerParams.GenerateExecutable = false;
compilerParams.GenerateInMemory = true;
compilerParams.IncludeDebugInformation = false;
compilerParams.ReferencedAssemblies.Add("mscorlib.dll");
compilerParams.ReferencedAssemblies.Add("System.dll");
compilerParams.ReferencedAssemblies.Add("System.Data.Linq.dll");

Qualche idea?

È stato utile?

Soluzione

Ciò potrebbe essere dovuto al fatto che questo assembly è archiviato in una posizione diversa da mscorlib.Dovrebbe funzionare se fornisci un percorso completo all'assembly.Il modo più conveniente per ottenere il percorso completo è lasciare che il caricatore .NET esegua il lavoro per te.Vorrei provare qualcosa del genere:

compilerParams.ReferencedAssemblies.Add(typeof(DataContext).Assembly.Location);

Altri suggerimenti

Potrebbe essere una risposta sciocca, ma sei sicuro che il codice sia in esecuzione su un computer con .NET Framework 3.5?

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