ich die Baugruppe über die folgendeLaden eine Anordnung von Bytes verliert den Standort
var loadedAssembly = Assembly.Load(File.ContentsAsBytes);
die File.ContentAsBytes gibt die DLL als byte[]
über die folgenden
System.IO.File.ReadAllBytes("dll location");
Das Problem ist, dass die geladene Baugruppe (loadedAssembly
) ihren physikalischen Standort verliert
- loadedAssembly.CodeBase - wird die Baugruppe eingestellt, die es geladen ist (was nicht korrekt ist)
- loadedAssembly.Location - ist leer
Gibt es eine Möglichkeit von einem byte[]
und bekommt ein laden ähnliches Ergebnis zu Assembly.LoadFile
als ich das das Ergebnis müssen mit dem AppDomain.CurrentDomain.AssemblyResolve
Das ist der springende Punkt. Dies hat tiefe Auswirkungen auf die Sicherheit. Eine Assemblyidentität wird nicht nur durch ihre Bytes dargestellt. Wo es geladen wurde (Disk, Internet, etc.) ist entscheidend. Sie können nicht vorgeben, dass eine bestimmte Menge von Byte ist, sagen wir, mscorlib.dll. Der einzige Weg wäre, es in einer temporären Datei zu speichern und von dort zu laden, was mit AssemblyResolve funktionieren könnte, aber das wirft die Frage auf, warum Sie das überhaupt machen wollen? –
Ich weiß nicht, was Ihr Kontext ist, aber ist es nicht eine Option, ein Wörterbuch selbst zu verwalten? –
@SimonMourier die Arbeit herum ist bereits gedacht, und kann in meinem Szenario verwendet werden, aber die Anwendung wäre viel flexibler, wenn ich das obige erreichen könnte. – dbones