25 Stimmen

BindingRedirect zu einem anderen Assembly-Namen

Sie können verwenden BindingRedirect um YourAssembly.dll 1.1.0.0 auf 1.2.0.0 umzuleiten.

Weiß jemand, ob es möglich ist, dies zu tun, wenn die Baugruppennamen unterschiedlich sind.

z.B.

YourAssembly1.dll (v1.1) leitet auf YourAssembly2.dll (v2.8) um

11voto

Szymon Rozga Punkte 17510

Wenn ich mich recht erinnere, habe ich dies vor etwa 4 Jahren mit dem AppDomain.AssemblyResolve Ereignis . Die Idee ist, dass Sie die AssemblyName-Anfrage erhalten und eine Assembly zurückgeben. In einigen Fällen war ich sogar in der Lage, DynamicAssembly zur Laufzeit zu generieren und diese zu injizieren. Ich weiß nicht mehr, welche Auswirkungen die starke Namensgebung auf diese hat.

0voto

Alex Dresko Punkte 4965

Verwenden Sie ILDASM und ILASM, um die ursprüngliche Assembly zu dekompilieren, zu ändern und neu zu kompilieren, sodass sie auf YourAssembly2.dll verweist.

Ich hatte die Idee in meinem Kopf und habe ein paar Recherchen angestellt, um zu überprüfen, ob es möglich ist. Siehe Ist es möglich, Assembly-Manifeste auf andere Weise als durch ILDASM/ILASM-Hacking zu ändern? y http://forums.asp.net/t/1582934.aspx/1

0voto

Jehof Punkte 33506

Dies sollte nicht möglich sein, da Ihre eigene Anwendung einen Verweis auf YourAssembly1 .

Wenn die Laufzeitumgebung Ihre Anwendung lädt, versucht sie, eine Assembly zu laden YourAssembly1.dll (unter Anwendung von Sondierungen und Versionsumleitungen) und kann daher die Baugruppe nicht laden YourAssembly2 stattdessen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X