Assambly dynamisch in ein Projekt laden bzw. verweisen?
-
Hey Freaks,
damit ich in Projekt A die Klassen etc. von Projket B verwenden kann, muss ich ja gezwungenermaßen in Projekt A auf die Klassenbibliothek B verweissen.
Nun gibt es anscheinend ne möglichkeit (vom hören sagen) das man die Klassenbibliothek nich explizit verweisen muss, sonder zur laufzeit an A binden kann. geht das? Un welche grund sollte das haben?
Grüße und Guten morgen;)
-
Wenn du Projekt A und Projekt B doch in einer Solution hast, dann referenzier sie einfach. Ansonsten kannst du Assembly.Load()/Assembly.LoadFrom() nuzten.
Hier noch eine Blog zu Load()/LoadFrom(): http://blogs.msdn.com/suzcook/archive/2003/05/29/57143.aspx
-
ARRgggghhh schrieb:
Hey Freaks,
damit ich in Projekt A die Klassen etc. von Projket B verwenden kann, muss ich ja gezwungenermaßen in Projekt A auf die Klassenbibliothek B verweissen.
Nun gibt es anscheinend ne möglichkeit (vom hören sagen) das man die Klassenbibliothek nich explizit verweisen muss, sonder zur laufzeit an A binden kann. geht das? Un welche grund sollte das haben?
Grüße und Guten morgen;)
Das geht. Du kannst zum Beispiel einen eigenen Auflösungsmechanismus implementieren, in dem Du einen event handler für das AppDomain.CurrentDomain.AssemblyResolve-Event implementierst. Dort kannst Du Deine Assembly wie's Dir passt per Assembly.LoadFile(path); laden und zurückgeben.
Grund dafür kann sein, dass Du Deine Applikation zur Laufzeit konfigurieren willst und Assemblies austauschts ohne die Applikation komplett neu zu bauen/ausliefern.