redirect policies

25/05/2009 - 11:47 von Martin | Report spam
Hallo,

wir liefern unsere Software mit bestimmten redirect policies aus, die sicher
stellen, dass gegen Vorgàngerversionen unseres Produkts kompilierte
Drittanbieter-Software auch mit der aktuellen Version lauffàhig bleiben. Das
ist zumindest meine Vorstellung davon warum wir das tun, als jemand der nicht
in der Entwicklung tàtig ist. Ich habe mich nun mit dem Problem
herumzuschlagen, dass eine dieser redirect policies fehlerhaft ist, weil sie
fàlschlicherweise für eine dll eine wesentlich àltere Version umleitet. Da
wurde offenbarder config File fehlerhaft erstellt.
Ich muss nun dem Kunden eine Anleitung an die Hand geben, wie er seine
bestehende Installation fixen kann, also die fehlerhafte policy austauscht.

An der Stelle wàre ich sehr froh, wenn mir jemand erklàren könnte, wie man
eine gelinkte redirect policy àndern und neu linken/registrieren kann.
Ich habe einfach mal die config Datei editiert und dann versucht mit al.exe
die neue Datei zu linken. Das hat aber nicht geklappt.
Wer kann mir erklàren, wie man das angeht?

Vielen Dank!
Martin
 

Lesen sie die antworten

#1 Günter Prossliner
25/05/2009 - 12:47 | Warnen spam
Hallo Martin!

wir liefern unsere Software mit bestimmten redirect policies aus, die
sicher stellen, dass gegen Vorgàngerversionen unseres Produkts
kompilierte Drittanbieter-Software auch mit der aktuellen Version
lauffàhig bleiben.



Ein Ansatz über Policy - Assemblies ist zum einen recht komplex im
Deployment und deshalb recht wartungsintensiv.

Eine meist bessere Variante ist die Assembly-Version nur bei Major-Releases
zu àndern (jene welche ohnehin nicht kompatibel sind und ohnehin eine
Anpassung bzw. erneute Kompilierung des "Add-Ins" benötigen). Für die
"sichtbare" Versionsnummer wird dann das "AssemblyFileVersionAttribute"
verwendet. Das betrifft dann z.b. die Anzeige der Dateiversion im Explorer
(bzw. genereller gesagt die Erstellung der VERSION Resource im C# Kompiler),
hat aber auf das Ladeverhalten der .NET Runtime keinen Einfluss.

MS verwendet diesen Ansatz selbst auch. So werden z.b. bei Service-Packs
oder Hotfixes *keine* neuen Versionsnummer vergeben (Du kannst unter
C:\Windows\Assembly das überprüfen). Nur bei neuen .NET Versionen wird eine
neue Assembly-Version verwendet.

Ich habe nur bei sehr wenigen Installationen die Variante mit dem Policies
gesehen. Auf meinem jetzigen Entwicklungsystem lediglich ein paar
"Office.Interop" PIAs.


Ich habe mich nun mit dem Problem herumzuschlagen, dass eine dieser
redirect policies fehlerhaft ist, weil sie fàlschlicherweise für eine
dll eine wesentlich àltere Version umleitet. Da wurde offenbarder
config File fehlerhaft erstellt.
Ich muss nun dem Kunden eine Anleitung an die Hand geben, wie er seine
bestehende Installation fixen kann, also die fehlerhafte policy
austauscht.



Der erste Schritt wàre es die fehlerhafte Policy Datei aus dem GAC zu
entfernen. Das kann entweder durch ENTF im Explorer auf %WINDIR%\Assembly,
oder durch das Tool "gacutil" erfolgen. Das ist aber IIRC nicht in der
Runtime sondern nur im SDK vorhanden, kann aber einfach als Datei auf das
Zielsystem kopiert werden (ggf. zuerst die EULA abklàren).

An der Stelle wàre ich sehr froh, wenn mir jemand erklàren könnte,
wie man eine gelinkte redirect policy àndern und neu
linken/registrieren kann.



Ebenfalls entweder durch Drag and Drop im Explorer oder über gacutil.

Ich habe einfach mal die config Datei editiert und dann versucht mit
al.exe die neue Datei zu linken. Das hat aber nicht geklappt.



Was heißt "nicht geklappt"? Wurde die Datei erstellt? Wurde diese im GAC des
Zielsystem registriert?

vgl.

[Global Assembly Cache-Tool (Gacutil.exe)]
http://msdn.microsoft.com/de-de/library/ex0ss12c(VS.80).aspx

[Assemblys dem Global Assembly Cache hinzufügen]
http://msdn.microsoft.com/de-de/lib...79105.aspx

[Redirecting Assembly Versions]
http://msdn.microsoft.com/en-us/library/7wd6ex19(vs.71).aspx


OK?
mfg GP

Ähnliche fragen