Announcement

Collapse
No announcement yet.

Referenzieren gegen nicht spezifizierte Version?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Referenzieren gegen nicht spezifizierte Version?

    Hallo zusammen,

    ich bin auf der Suche nach einer Lösung, um Assemblies zu referenzieren, ohne eine spezielle Version zur Entwicklungszeit anzugeben.

    Auf unserem Service laufen diverse Plugins, welche mit eigener Versionsverwaltung gepflegt werden. Meine aufsetzenden Tools referenzieren diese Plugins um an gewisse Daten ranzukommen.

    Leider muss ich meine Tools jeweils neu kompilieren, wenn eine neue Pluginversion vorliegt, da sonst mein Tool auf die Nase fällt beim AssemblyResolve - wegen der unterschiedlichen Version des Plugins.

    Die Pluginversionen ändern sich nur im Revision-Bereich, die Plugins an sich sind kompatibel, an den Schnittstellen wurde nichts geändert.

    Gibt es also eine Möglichkeit eine Referenz auf ein Assembly zu erstellen, ohne auf eine spezielle Version zu verweisen, ohne nur noch mit Reflections arbeiten zu können?

    Dank im Vorraus

    BeowulfOF
    Quote the raven Nevermore!

  • #2
    Hallo,

    höchstwahrscheinlich führt Dich folgender Hinweis von Andreas Kosch ans Ziel mit Änderung Deiner app.config:
    Wenn eine Assembly die Versionsnummer (egal, an welcher Stelle ändert), muss auch der Client seinen Verweis im Manifest aktualisieren (Fall A) oder die Versionsnummer über einen der unterstützten Weg umgebogen (Fall B) werden. Die IDE von Visual Studio 2005 ist so clever, den Fall A automatisch hinter den Kulissen auszuführen, wenn der Client neu kompiliert wird. Der Fall B könnte so aussehen - der bindingRedirect-Eintrag leitet die Versionsnummer um:
    Code:
    <?xml version="1.0"?>
    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <probing privatePath="Bin" />
          <dependentAssembly>
            <assemblyIdentity name="OSProbingDemoLib" 
                          publicKeyToken="d0ac782f480cdd54" culture="de-DE"/>
            <publisherPolicy apply="no" />
            <bindingRedirect oldVersion="1.2.0.0" newVersion="1.3.0.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    Gruß Jürgen

    Comment


    • #3
      Danke für den Hinweis Jürgen,

      funktioniert das auch mit Platzhaltern in der "newVersion"?

      Es wäre schön, wenn es halt so einstellbar wäre, dass ich das nicht immer Nachpflegen muss, da ich von den Versionchanges auch nicht viel mitbekomme, eigentlich nur dann, wenn wieder eine Exception fliegt.

      Gruß BeowulfOF
      Quote the raven Nevermore!

      Comment


      • #4
        Hallo,

        ..Leider muss ich meine Tools jeweils neu kompilieren, wenn eine neue Pluginversion vorliegt,
        der saubere "offizielle" Weg besteht darin, dass der Herausgeber der Plugins immer dann eine Publisher Policy zusammen mit der geänderten Plugin-Assembly installiert, wenn sich die Versionsnummer des Plugins ändert. Die im GAC abgelegte Publisher Policy "überstimmt" alle anderen Versionsnummern-Angaben, so dass jeder Zugriff systemweit auf die neue Version umgeleitet wird.

        Wenn der Herausgeber nachträglich eine bereits veröffentlichte Assembly ändert und dabei eine neue Versionsnummer (Strong Name) vergibt, müsste beim aufrufenden Programm die .config angepasst werden, damit .NET automatisch die neue Assembly-Version anstelle der alten aufruft, ohne das Programm neu kompilieren zu müssen. Damit diese Anpassung der Konfigurationsdatei vermieden wird, ist es besser, im GAC eine Publisher Policy zu installieren.

        Comment

        Working...
        X