Hei Leute
Ich habe ein Programm in C# geschrieben dass Plugins zur Laufzeit laden
kann(als DLL) und diese benutzen kann. Aber ich habe ein kleines Problem
mit dem CodeDomProvider.
Ich lade mit diesem Code die dll in meine exe rein:
1 | byte[] filebytes = File.ReadAllBytes(ofd.FileName);
|
2 | Assembly.Load(filebytes);
|
Danach greife ich auf die Assembly zu was auch wunderbar geht. Wenn ich
aber mit folgendem Code eine C# Datei mit Link zu diesem Plugin
kompilieren möchte, erhalte ich den Fehler dass die Referenz darauf
fehlt. Der Code dazu wäre.
1 | CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
|
2 | CompilerParameters parameters = new CompilerParameters();
|
3 | parameters.GenerateInMemory = true;
|
4 | var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(a => !a.IsDynamic).Select(a => a.Location);
|
5 | parameters.ReferencedAssemblies.AddRange(assemblies.ToArray());
|
6 | CompilerResults result = provider.CompileAssemblyFromSource(parameters, File.ReadAllText(file));
|
Ich hoffe ihr könnt mir sagen was ich falsch mache damit es bald
funktioniert. Die Using Direktive ist in der Datei drin nur die Referenz
sieht er irgendwie nicht..
Vielen Dank und Gruss
Farin