Ich wurde gebeten, mit einem Produkt zu helfen, das in VB.NET geschriebene DLLs enthält. Die ausführbaren Dateien der Kunden verweisen auf diese DLLs. Abstrahieren die Situation:Referenz VB.NET-Schnittstelle in verschiedenen Assembly ohne neu zu kompilieren?
HINTERGRUND:
Version 1 von Produkt LocationProduct enthält Location1.dll, die Schnittstelle ICounty im Namensraum Country.Province enthält. Kunden kompilierten ihre ausführbaren Dateien mit Verweisen auf Location1.dll.
Namespace Country.Province
Public Interface ICounty
Property District As String
End Interface
End Namespace
Version 2 von LocationProduct enthält Location2.dll zusätzlich zu Location1.dll. Die Schnittstelle ICounty wurde von Location1.dll zu Location2.dll mit der Schnittstelle und seinem Namespace unverändert verschoben. Neue Kunden verwendeten Version 2 von LocationProduct und kompilierten ihre ausführbaren Dateien mit Verweisen auf Location1.dll und Location2.dll.
PROBLEM:
Ein Kunde, dessen ausführbare Datei referenziert Version 1 von LocationProduct versuchte Version 2. Der Kunde erhielt eine Ausnahme zu aktualisieren, „Typ konnte nicht geladen werden‚Country.Province.ICounty‘aus Assembly‚Location1 .. . "
Wenn die Schnittstelle ICounty von Location2.dll zu Location1.dll zurück verschoben wird, erhalten ausführbare Dateien, die mit Version 2 kompiliert werden, eine ähnliche Ausnahme: "Der Typ 'Country.Province.ICounty' konnte nicht von Assembly 'Location2 ..." geladen werden. .
Gibt es eine Möglichkeit, LocationProduct zu ändern, sodass kein Kunde neu kompilieren muss?
Wenn Sie sagen, versucht, auf Version 2 zu aktualisieren, haben sie die ausführbare UND die DLL-Dateien aktualisiert? –
Kundenprodukte werden separat von LocationProduct installiert. Ein Kunde hat seine ausführbare Datei mit Version 1 von LocationProduct erstellt. Der Kunde deinstallierte später Version 1 und installierte Version 2. Der Kunde erwartete, dass seine ausführbare Datei mit Version 2 von LocationProduct ohne Neukompilierung arbeiten konnte. Die Versionen 1 und 2 von LocationProduct haben jedoch die Kompatibilität nicht beibehalten, da ICounty von Location1 verschoben wurde.dll zu Location2.dll. Wir möchten vermeiden, dass Kunden ihre ausführbaren Dateien neu kompilieren müssen, nachdem sie LocationProduct von Version 1 auf Version 2 aktualisiert haben. – dabark