Frage

Ich versuche, den Code kompilieren dynamicaly CodeDom verwenden. Ich kann andere Baugruppen geladen werden, aber ich kann System.Data.Linq.dll nicht geladen werden. Ich erhalte eine Fehlermeldung:

Metadaten Datei 'System.Data.Linq.dll' konnte nicht gefunden werden

Ihr Code wie folgt aussieht:

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

Irgendwelche Ideen?

War es hilfreich?

Lösung

Das kann sein, weil diese Anordnung in einem anderen Ort gespeichert ist, als mscorlib ist. Es sollte funktionieren, wenn Sie einen vollständigen Pfad zur Montage bieten. Der bequemste Weg, den vollständigen Pfad zu erhalten, ist die .NET-Lader die Arbeit für Sie zu lassen. Ich würde versuchen, so etwas wie folgt aus:

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

Andere Tipps

Dies kann eine dumme Antwort sein, aber sind Sie sicher, dass der Code auf einem Computer mit .NET Framework 3.5 ausgeführt wird?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top