Laden...

Verweise auf .net Dll bringt Versionsfehler - Wie mache ich das Versionsunabhängig?

Erstellt von Pedro_15 vor 7 Jahren Letzter Beitrag vor 7 Jahren 3.326 Views
P
Pedro_15 Themenstarter:in
375 Beiträge seit 2005
vor 7 Jahren
Verweise auf .net Dll bringt Versionsfehler - Wie mache ich das Versionsunabhängig?

Hallo,

ich habe ein grosses Problem. Ich verwende in meinem .net csharp Projekt (A) eine .net csharp dll aus einem anderen Projekt (B) von mir.
Ich habe sie über den Verweis eingebunden.

Und die Applikation erstellt. Alles gut, bis dahin.

Jetzt ändere ich was in meinem DLL Projekt (B) ohne irgendwelche Aufrufparameter von Methoden zu ändern. Wenn ich jetzt nur die dll tausche in meiner Applikation aus Projekt (A), ohne die Applikation neu zu erstellen, kommt ein Fehler beim Aufruf, da die Version nicht mit der kompelierten Version übereinstimmt.

Gibt es eine Lösung, das ich die DLL Versionsunabhängig einbinden kann?

Es gibt sehr viele Version der DLL und daher müsste ich z.b bei Änderungen an Projekt A mit jeder DLL Version (B) kompelieren und damit eine Version von A erzeugen. Das ist sehr unschön.

Wie gesagt, es ändert sich nichts an den öffentlichen Aufrufen und den Parametern in der DLL

Danke!

Pedro

S
145 Beiträge seit 2013
vor 7 Jahren

Ich vermute mal du hast die AssemblyVersion erhöht.
Erhöhe nur dei Dateiversion dann sollte ein austausch/aktualisierung problemlos möglich sein.

16.806 Beiträge seit 2008
vor 7 Jahren

Unschön ist aus ALM (Application Lifecycle Management) vor allem die Tatsache, dass einfach eine DLL getauscht wird 😉
Wenn Du eine dauerhafte, on-the-fly Austauschbarkeit willst, dann müsstest Du eigentlich auf ein Framework wie MEF zurück greifen.

S
145 Beiträge seit 2013
vor 7 Jahren

dll als strongname erstellen bringt auch schonmal eine kleine sicherheit

D
152 Beiträge seit 2013
vor 7 Jahren

Wenn die DLL an sich kompatibel ist und sich nur die Version geändert hat.
Kannst du eine app.config anlegen/erweitern mit/um einen <assemblyBinding>-Element für <runtime>.

W
872 Beiträge seit 2005
vor 7 Jahren

Die am Anfang von .Net erdachte Lösung war der Global Assembly Cache, indem man die Versionshölle durch eine Mischung von Versionierung und mehreren gleichzeitig verfügbaren Versionen umgehen wollte. Leider hat sich das in der Praxis nicht so recht durchgesetzt.
Heute geht man eher den Weg, daß man alles in einem Rutsch mit einem Skript baut. Du könntest auch ein großes Projekt mit allen und ein kleines Projekt mit nur einem Projekt anlegen.

S
322 Beiträge seit 2007
vor 7 Jahren

Hallo,

manchmal reicht es wenn man bei dem jeweiligen Verweis "Specific Version" auf "False" setzt (siehe Properties).
Vielleicht hilft es schon!?

Gruß
Steffen

D
152 Beiträge seit 2013
vor 7 Jahren

manchmal reicht es wenn man bei dem jeweiligen Verweis "Specific Version" auf "False" setzt (siehe Properties).

Die Eigenschaft "Specific Version" bei einen Verweis hat doch nur beim Compilieren eine Bedeutung, oder täusche ich mich das jetzt.

16.806 Beiträge seit 2008
vor 7 Jahren

Ne, Du liegst richtig. Specific Version ist eine Compile Time Property.

2.298 Beiträge seit 2010
vor 7 Jahren

Damit gilt die Einstellung doch aber auch immer noch bei der Assembly auf die verwiesen wird, wenn die Version anders ist.

Ich tausche in der Regel auch nur die Assemblies aus, die sich geändert haben. - Klappt bei mir bisher sehr gut.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |