Ich habe eine ausführbare Datei namens ess.exe
. Ich erzeuge eine XmlSerializer DLL dafür mit sgen.exe
, und wenn ich es ausführe, nimmt es die generierte ess.XmlSerializers.dll
und alles ist gut.Wie Sie eine Sgen-generierte XmlSerializer-DLL für eine DLL anstelle einer EXE abholen?
Ich habe auch eine DLL namens EntrianSourceSearch_14.dll
, die dynamisch geladen wird mit Assembly.LoadFrom(DllPathname)
. Wenn ich eine XmlSerializer-DLL für diese DLL erzeuge, nimmt sie nicht die generierte DLL ab; Stattdessen wird auf die Laufzeitgenerierung des XML-Serialisierungscodes zurückgegriffen.
Wie bekomme ich meine DLL, um die entsprechende generierte XmlSerializer DLL abzuholen?
Edit: Ich kann nicht die XmlSerializer-DLL in das Verzeichnis der ausführbaren Datei, da meine DLL Teil einer Visual Studio-Erweiterung ist - die ausführbare Datei ist Visual Studio (devenv.exe), und kopieren Stücke meines Produkts in sein Verzeichnis würde wahrscheinlich als antisozial angesehen werden. :-)
Bearbeiten, um mehr Kontext hinzuzufügen: Dies ist ein Visual Studio-Add-In und Erweiterung. Es funktioniert mit allen Versionen von Visual Studio von 2005 bis 2017. Der Großteil des Codes wird in Programme installiert und ältere Versionen von Visual Studio laden sie einfach von dort als Add-In. Für neuere Versionen von Visual Studio, die Add-Ins nicht unterstützen, gibt es eine Erweiterung, die nur ein Loader für diese Hauptkomponenten in Programme ist. Diese Erweiterung verwendet LoadFrom
, um diese Hauptkomponenten zu laden, von denen eine EntrianSourceSearch_14.dll
ist.
Sie einen Ausschnitt des Codes sehen kann, dass die Assembly lädt in [diesem Beitrag] (https://stackoverflow.com/a/3798614/17034). Beachten Sie den Aufruf von Assembly.Load(), es wird nicht in demselben Verzeichnis suchen, das LoadFrom() ausgeführt hat. Sie können dies mit Fuslogvw.exe überprüfen. Ziehen Sie in Betracht, die Assembly xmlserializers.dll in dasselbe Verzeichnis wie die exe zu verschieben. –
@HansPassant: Danke für die Erklärung und den Link zum Assembly-Loading-Code. In Bezug auf "die xmlserializers.dll-Assembly in dasselbe Verzeichnis wie die Exe zu verschieben", ist die DLL Teil einer Visual Studio-Erweiterung, also ist die ausführbare Datei Visual Studio (devenv.exe). Das Kopieren von Teilen meines Produkts in sein Verzeichnis würde wahrscheinlich als antisozial angesehen werden! – RichieHindle
Wichtige Details wie das gehören in die Frage, kein Kommentar. Fügen Sie so viele kontextbezogene Informationen wie möglich hinzu. Dann noch etwas mehr. –