vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.

Hinweis:
Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden!

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen zu Tipps & Tricks und Workshops im vb@rchiv
Workshop 117: Assemblies und deren Versionen in VB.NET 
Autor: tho192
 Workshop anzeigenDatum: 16.11.09 10:04

Hallo,

zu diesem Workshop habe ich eine Frage:
bei meinem .net (2.0)-Projekt benutze ich eine .dll eines Fremdherstellers. Mehrmals im Jahr kommen da Hotfixes, was die Versionsnummer dieser .dll sich ändern lässt. Und jedesmal muss ich meine benutzende Assembly gegen die des Fremdherstellers neu kompilieren, da meine eine strenge Versionsprüfung vornimmt - mit anschließendem Deploy usw.
Meine Frage nun: kann ich meiner Assembly sozusagen eine gewisse "Versionstoleranz" gegenüber einer referenzierten Assembly beibringen, da es sich wirklich nur um Fehlerkorrekturen handelt und die Funktionalität sich nicht ändert?

Für Antworten vielen Dank!
Thomas
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Assemblies und deren Versionen in VB.NET 
Autor: Ohanja
Datum: 16.11.09 15:37

Hi

Das wird so nicht gehen, da die Manifest deiner Assembly explizit auf die Version der Dll verweist. Wenn du dann eine neue Dll-Version hast musst du die auch neu referenzieren und dein Assembly gegen die neue Version kompilieren. Die Frage die sich mir stellt ist, wenn der Hersteller so viel fixen muss(hm....) und der Funktionsumfang sich nicht ändert, würde es doch ausreichen wenn die die Dateiversion ändern und nicht die Assembly-Version, oder??!! Denn die Datei-Version ist nicht relevant. Wie ich im Workshop beschrieben habe können mehrere Versionen ein und der selben dll im GAC installiert sein. Solltes du die Dll im Anwendungsverzeichnis liegen haben, kommst du eh nicht drum herum die neu einzubinden. Du musst letztendlich selbst entscheiden wie du damit verfährst. Mir fällt auch im Moment da keine Lösung ein, die dir sofort helfen könnte. Interessieren würds mich aber doch mal ob es da nicht eine andere Lösung gibt. Wobei, als ich diesen Workshop gemacht hatte, war in der MSDN auch nicht viel darüber. Falls du doch was in Erfahrung bringst, bitte schreiben!!!

mfg
Ohanja
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Assemblies und deren Versionen in VB.NET 
Autor: tho192
Datum: 16.11.09 16:34

Hallo,

vielen Dank für Deine Antwort. Der Fremdhersteller (bei dem es sich um ein namentlich nicht näher genanntes großes Softwarehaus mit Sitz in Darmstadt handelt), liefert noch eine Datei gleichen Namens, nur mit der Erweiterung .xml statt .dll, in der, so vermute ich aufgrund der dort verwendeten Namen, möglicherweise noch Direktiven gemacht werden können, die benutzenden Assemblies eine andere Version vorgaukeln.
Auf jeden Fall, habe ich unserer Systemunterstützung im Haus mal Deinen Hinweis auf die beiden Versionen (Assembly und Datei) gegeben, die wollen mal beim Hersteller damit vorstellig werden.

Gruß
Thomas
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Assemblies und deren Versionen in VB.NET 
Autor: tho192
Datum: 18.11.09 08:58

Hallo,

jetzt habe ich Antwort vom Fremdhersteller bekommen. Eine "Versionstoleranz" lässt sich über die Konfiguration bewerkstelligen. Man kann eine sogenannte "Assembly Binding Redirection" definieren (siehe: http://msdn.microsoft.com/en-us/library/2fc472t2%28VS.80%29.aspx.

Als spezielles Beispiel des Herstellers hat er folgendes mitgeteilt (ich habe die konkreten Namen etwas verallgemeinert):
<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="hersteller.produkt.assembly.Runtime"
publicKeyToken="0123456789abcdef" />
      <bindingRedirect oldVersion="1.1.1.0-1.2.1.24" newVersion="2.0.1.0" />
      <codeBase version="2.0.1.0"
      href="file:///C:\Program Files\Common" & _
        "Files\hersteller\hersteller.produkt.assembly.Runtime.dll"/>
    </dependentAssembly>
  </assemblyBinding>
</runtime>
Note:
The <runtime> configuration fragment has to be placed behind the <configSections> and <appSettings> sections of the configuration file. Otherwise the .NET runtime will report errors.

Das wäre wohl die Lösung, die ich dann das nächste Mal ausprobieren werde.

Gruß
Thomas
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Assemblies und deren Versionen in VB.NET 
Autor: Ohanja
Datum: 18.11.09 14:37

hi tho192

danke für den hinweis. Ich werde es mir mal ansehen und auch testen.
<bindingRedirect>.... das ich da nicht selbst drauf gekommen bin....
Wenns recht ist, werde ich mich dann mal mit dem vbarchiv team in Verbindung setzten und den Workshop dementsprechend erweitern. Eine Erwähnung deiner seits für deine anregung und eventuelle lösung ist dann auf jedenfall drin!!!

mfg
Ohanja
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Assemblies und deren Versionen in VB.NET 
Autor: Ohanja
Datum: 18.11.09 14:50

noch was

muss ich aber erst noch testen.
Ich habe ja im Wshop geschrieben, das es einmal die Assembly version und die Datei Version gibt und das für die clr nur die Assembly Version wichtig ist.
Theoretisch müsste man eigentlich nur die Dateiversion ändern wenn man innerhalb der funktionen der Dll den Code ändert. Solange keine Deklarationen bzw. Prozedurköpfe, Übergabeparameter und Rückgabeparameter geändert oder hinzugefügt werden sollte die Dateiversion ausreichen. Weil ja deine Anwendung nur die funktionen der dll aufruft und eventuelle rückgabewerte verwendet. Der Code innerhalb der Funktionen dieser Dll wird ja unabhängig von der aufrufenden Anwendung verarbeitet.

mfg
Ohanja
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel