Update signierter Assemblies

11/12/2008 - 14:12 von Mrfu | Report spam
Hallo,
ich würde gerne in meiner Anwendung neue Versionen von referenzierten
signierten Assemblies einspielen ohne die Anwendung neu zu kompilieren.
Bisher habe ich als Möglichkeit gefunden eine Konfiguration für meine
Anwendung zu erstellen und dort über bindingRedirect auf die neue Version zu
verweisen.
<bindingRedirect oldVersion="14.0.0.28002" newVersion="14.1.0.30476"/>
Allerdings muss ich dann aber immer wenn ich eine neue Version habe auch die
Konfigurationsdatei mit ausliefern, da ich dort die neue Versionsummer
angeben muss? Ich hàtte gerne so etwas wie newVersion="14.*". Ist so etwas
möglich?

Christoph
 

Lesen sie die antworten

#1 Günter Prossliner
11/12/2008 - 18:04 | Warnen spam
Hallo Christoph!

ich würde gerne in meiner Anwendung neue Versionen von referenzierten
signierten Assemblies einspielen ohne die Anwendung neu zu
kompilieren.



Das kannst Du auch, solange sich die AssemblyVersion nicht àndert

Bisher habe ich als Möglichkeit gefunden eine
Konfiguration für meine Anwendung zu erstellen und dort über
bindingRedirect auf die neue Version zu verweisen.
<bindingRedirect oldVersion="14.0.0.28002" newVersion="14.1.0.30476"/>
Allerdings muss ich dann aber immer wenn ich eine neue Version habe
auch die Konfigurationsdatei mit ausliefern, da ich dort die neue
Versionsummer angeben muss?



Eine andere Möglichkeit sind die sogenannten "Publisher Policies". Das sind
spezielle Assemblies (gelinkt über al.exe), welche das Redirect beinhalten.
Diese können in den GAC installiert werden (somit muß die
Applikations-Konfiguration nicht angepasst werden).

Ich hàtte gerne so etwas wie
newVersion="14.*". Ist so etwas möglich?



Nein.

Ich würde Dir aber empfehlen für kompatible Änderungen die AssemblyVersion
NICHT zu inkrementieren, und stattdessen die AssemblyFileVersion zu
verwenden. Die AssemblyFileVersion wird im Endeffekt in die Version-Resource
einkompiliert. Der Windows-Explorer und andere Anwendungen, welche über
diese auslesen verwenden diese Version.

Die AssemblyVersion wàre dann zu ànderen, wenn es imkompatible Änderungen
sind (und die Anwendung ohnehin neu kompiliert werden muss). Diese
Assemblies können dann auch Side-by-Side laufen.

z.b.

[assembly:AssemblyVersion("14.1.0.0")]
[assembly:AssemblyFileVersion("14.1.0.30476")]

Microsoft verwendet übrigens das selbe Schema. So ànderen sich z.b.
Assembly-Versionen bei Hotfixes (und teilweise sogar Service-Packs) nicht,
allerdings schon die AssemblyFileVersion. Schau mal über den Explorer nach
C:\Windows\Assemblies (die GC Shell-Extension). Dort siehst Du die
Assembly-Version. Im Gegensatz zu den Binaries unter
%WINDIR%\Microsoft.Net\Framework\vxxxxx. Dort siehst Du die FileVersions.
Und diese sind unterschiedlich.

Der Aufwand von Binding-Redirects bzw. Publisher-Assemblies ist IMO nur in
Einzelfàllen gerechtfertigt. Ich würde das nicht zu einem generellen Schema
machen.


OK?
mfg GP

Ähnliche fragen