Eine Assembly in der KonfigurationsDatei laden

11/03/2008 - 09:39 von Andreas.Aigner | Report spam
Dies ist eine mehrteilige Nachricht im MIME-Format.

Ich habe folgendes Szenario:

In meinem Programm benutze ich Code einer eingebundenen Assembly aus dem
GAC.
Nun möchte ich auf exakt diese Assembly - gleiche Versionsnummer - in
meiner Applikationskonfigurationsdatei zugreifen,
weil ich über system.diagnostics einen Listener aus dieser Library
einbinden möchte.
Ändere ich die Versionsnummer der eingebundenen Assembly, soll automatisch
in der KonfigurationsDatei auch die neue Version verwendet werden.

Ich möchte also in der Konfigurationsdatei keine Versionsnummer,
PublicKeyToken, etc. angeben.

Die Ausführung funktioniert, wenn ich die eingebundene Assembly lokal im
Anwendungsverzeichnis halte und nicht im GAC halte.

Beispiel:

<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="MyListener"
type="myNamespace.MyListener, myAssembly"/> //<-- hier keine
Versionnummer!
<remove name="Default" />
</listeners>
</trace>
</system.diagnostics>

Wie ist dies realisierbar?

Vielen Dank,
Andreas Aigner


<br><font size=2 face="sans-serif">Ich habe folgendes Szenario:</font>
<br>
<br><font size=2 face="sans-serif">In meinem Programm benutze ich Code
einer eingebundenen Assembly aus dem GAC.<br>
Nun möchte ich auf exakt diese Assembly - gleiche Versionsnummer - in meiner
Applikationskonfigurationsdatei zugreifen,<br>
weil ich über system.diagnostics einen Listener aus dieser Library einbinden
möchte.</font>
<br><font size=2 face="sans-serif">Ändere ich die Versionsnummer der eingebundenen
Assembly, soll automatisch in der KonfigurationsDatei auch die neue Version
verwendet werden.</font>
<br>
<br><font size=2 face="sans-serif">Ich möchte also in der Konfigurationsdatei
keine Versionsnummer, PublicKeyToken, etc. angeben.</font>
<br>
<br><font size=2 face="sans-serif">Die Ausführung funktioniert, wenn ich
die eingebundene Assembly lokal im Anwendungsverzeichnis halte und nicht
im GAC halte.</font>
<br>
<br><font size=2 face="sans-serif">Beispiel:</font>
<br>
<br><font size=2 color=blue>&lt;</font><font size=2 color=#a11f12>system.diagnostics</font><font size=2 color=blue>&gt;</font>
<br><font size=2 color=blue>&nbsp; &nbsp; &lt;</font><font size=2 color=#a11f12>trace</font><font size=2 color=blue>
</font><font size=2 color=red>autoflush</font><font size=2 color=blue>=</font><font size=2>&quot;</font><font size=2 color=blue>true</font><font size=2>&quot;</font><font size=2 color=blue>
</font><font size=2 color=red>indentsize</font><font size=2 color=blue>=</font><font size=2>&quot;</font><font size=2 color=blue>4</font><font size=2>&quot;</font><font size=2 color=blue>&gt;</font>
<br><font size=2 color=blue>&nbsp; &nbsp; &nbsp; &lt;</font><font size=2 color=#a11f12>listeners</font><font size=2 color=blue>&gt;</font>
<br><font size=2 color=blue>&nbsp; &nbsp; &nbsp; &nbsp; &lt;</font><font size=2 color=#a11f12>add</font><font size=2 color=blue>
</font><font size=2 color=red>name</font><font size=2 color=blue>=</font><font size=2>&quot;</font><font size=2 color=blue>MyListener</font><font size=2>&quot;</font>
<br><font size=2 color=blue>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</font><font size=2 color=red>type</font><font size=2 color=blue>=</font><font size=2 color=#a11f12>&quot;myNamespace.MyListener,
myAssembly&quot;</font><font size=2 color=blue>/&gt; &nbsp;//&lt;-- hier
keine Versionnummer!</font>
<br><font size=2 color=blue>&nbsp; &nbsp; &nbsp; &nbsp; &lt;</font><font size=2 color=#a11f12>remove</font><font size=2 color=blue>
</font><font size=2 color=red>name</font><font size=2 color=blue>=</font><font size=2>&quot;</font><font size=2 color=blue>Default</font><font size=2>&quot;</font><font size=2 color=blue>
/&gt;</font>
<br><font size=2 color=blue>&nbsp; &nbsp; &nbsp; &lt;/</font><font size=2 color=#a11f12>listeners</font><font size=2 color=blue>&gt;</font>
<br><font size=2 color=blue>&nbsp; &nbsp; &lt;/</font><font size=2 color=#a11f12>trace</font><font size=2 color=blue>&gt;</font>
<br><font size=2 color=blue>&lt;/</font><font size=2 color=#a11f12>system.diagnostics</font><font size=2 color=blue>&gt;</font>
<br>
<br><font size=2 face="sans-serif">Wie ist dies realisierbar?</font>
<br>
<br><font size=2 face="sans-serif">Vielen Dank,<br>
Andreas Aigner</font>
 

Lesen sie die antworten

#1 Frank Dzaebel
11/03/2008 - 18:55 | Warnen spam
Hallo Andreas,

In meinem Programm benutze ich Code einer
eingebundenen Assembly aus dem GAC.
Nun möchte ich auf exakt diese Assembly -
gleiche Versionsnummer - in meiner
Applikationskonfigurationsdatei zugreifen,
weil ich über system.diagnostics einen Listener
aus dieser Library einbinden möchte.
Ändere ich die Versionsnummer der eingebundenen
Assembly, soll automatisch in der KonfigurationsDatei
auch die neue Version verwendet werden.



Es gibt verschiedene Möglichkeiten.
Zum Beispiel über eine Richtlinien-Assembly (policy Assembly).

[Gewusst wie: Erstellen einer Herausgeberrichtlinie]
http://msdn2.microsoft.com/de-de/library/dz32563a(VS.80).aspx

[Umleiten von Assemblyversionen]
http://msdn2.microsoft.com/de-de/library/7wd6ex19(VS.80).aspx

oder ggf. auch ein direktes bindingRedirect in den config.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen