Schritt 1: Untersuchen der Konfigurationsdateien

Das Assemblybindungsverhalten kann auf verschiedenen Ebenen auf Basis von drei XML-Dateien konfiguriert werden:

  • Anwendungskonfigurationsdatei

  • Herausgeberrichtliniendatei

  • Computerkonfigurationsdatei

Diese Dateien verwenden dieselbe Syntax und stellen Informationen wie Bindungsumleitungen, den Speicherort des Codes und Bindungsarten für bestimmte Assemblys zur Verfügung. Jede Konfigurationsdatei kann <AssemblyBinding>-Element enthalten, das den Bindungsprozess umleitet. Die untergeordneten Elemente des <AssemblyBinding>-Element enthalten <dependentAssembly>-Element. Die untergeordneten Elemente des <dependentAssembly>-Element schließen <assemblyIdentity>-Element, <bindingRedirect>-Element und <CodeBase>-Element.

Hinweis

Konfigurationsinformationen sind in den drei Konfigurationsdateien enthalten. Nicht alle Elemente sind auch in allen Konfigurationsdateien gültig.So können sich z. B. Informationen zum Bindungsmodus und private Pfadinformationen nur in der Anwendungskonfigurationsdatei befinden.Eine vollständige Liste der Informationen, die in jeder Datei enthalten sind, finden Sie unter Konfigurieren von Anwendungen.

Anwendungskonfigurationsdatei

Im ersten Schritt durchsucht die Common Language Runtime die Anwendungskonfigurationsdatei nach Informationen, die die im Manifest der aufrufenden Assembly gespeicherten Versionsinformationen überschreiben. Die Anwendungskonfigurationsdatei kann mit einer Anwendung bereitgestellt werden, wird aber nicht für die Ausführung der Anwendung benötigt. In der Regel erfolgt der Abruf dieser Datei fast unmittelbar, aber in Fällen, in denen sich die Anwendungsbasis auf einem Remotecomputer befindet, wie z. B. in einem webbasierten Szenario mit Internet Explorer, muss die Konfigurationsdatei heruntergeladen werden.

Im Fall von ausführbaren Clientdateien befindet sich die Anwendungskonfigurationsdatei im selben Verzeichnis wie die ausführbare Datei der Anwendung und verfügt über denselben Basisnamen wie diese sowie über die Dateierweiterung .config. Die Konfigurationsdatei für C:\Programme\Myapp\Myapp.exe ist z. B. C:\Programme\Myapp\Myapp.exe.config. In einem browserbasierten Szenario muss die HTML-Datei das <Link>-Element verwenden, um auf der Konfigurationsdatei sich explizit zu veranschaulichen.

Im folgenden Code wird ein einfaches Beispiel für eine Anwendungskonfigurationsdatei bereitgestellt. In diesem Beispiel wird der Listeners-Auflistung ein TextWriterTraceListener hinzugefügt, um das Aufzeichnen von Debuginformationen in eine Datei zu aktivieren.

<configuration>
   <system.diagnostics>
      <trace useGlobalLock="false" autoflush="true" indentsize="0">
         <listeners>
            <add name="myListener" type="System.Diagnostics.TextWriterTraceListener, system version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />
         </listeners>
      </trace>
   </system.diagnostics>
</configuration>

Herausgeberrichtliniendatei

Im zweiten Schritt überprüft die Common Language Runtime die Herausgeberrichtliniendatei, sofern eine solche vorhanden ist. Herausgeberrichtliniendateien werden von einem Komponentenherausgeber als Fix oder Update an eine gemeinsame Komponente verteilt. Diese Dateien enthalten Informationen zur Kompatibilität, die vom Herausgeber der gemeinsamen Komponente ausgegeben werden. Diese Komponente leitet einen Verweis an eine neue Version weiter. Anders als Anwendungs- und Computerkonfigurationsdateien sind Herausgeberrichtliniendateien in ihren eigenen Assemblys enthalten, die im globalen Assemblycache installiert sein müssen.

Es folgt ein Beispiel für eine Konfigurationsdatei für Herausgeberrichtlinien:

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

            <dependentAssembly>
                <assemblyIdentity name="asm6" publicKeyToken="c0305c36380ba429" /> 
                <bindingRedirect oldVersion="3.0.0.0" newVersion="2.0.0.0"/>  
            </dependentAssembly>

        </assemblyBinding>
    </runtime>
</configuration>

Zum Erstellen einer Assembly können Sie das Al.exe (Assembly Linker-Tool)-Tool mit einem Befehl wie dem Folgenden verwenden:

Al.exe /link:asm6.exe.config /out:policy.3.0.asm6.dll /keyfile: compatkey.dat /v:3.0.0.0

compatkey.dat ist eine Schlüsseldatei mit starkem Namen. Dieser Befehl erstellt eine Assembly mit starkem Namen, die Sie im globalen Assemblycache einfügen können.

Hinweis

Herausgeberrichtlinien haben Auswirkungen auf alle Anwendungen, von denen die gemeinsame Komponente verwendet wird.

Die Konfigurationsdatei für Herausgeberrichtlinien überschreibt Versionsinformationen, die aus der Anwendung stammen (d. h. aus dem Assemblymanifest oder aus der Anwendungskonfigurationsdatei). Wenn in der Anwendungskonfigurationsdatei keine Anweisung zur Umleitung der im Assemblymanifest angegebenen Version enthalten ist, überschreibt die Herausgeberrichtliniendatei die Version, die im Assemblymanifest angeben ist. Enthält die Anwendungskonfigurationsdatei hingegen eine Umleitungsanweisung, überschreibt die Herausgeberrichtlinie die dort angegebene Version und nicht diejenige, die im Manifest angegeben ist.

Eine Herausgeberrichtliniendatei wird verwendet, wenn eine gemeinsame Komponente aktualisiert wird und die neue Version der gemeinsamen Komponente von allen Anwendungen übernommen werden soll, die diese Komponente verwenden. Die Einstellungen in der Herausgeberrichtliniendatei überschreiben diejenigen der Anwendungskonfigurationsdatei, es sei denn, diese erzwingt den abgesicherten Modus.

8f6988ab.collapse_all(de-de,VS.110).gifAbgesicherter Modus

Herausgeberrichtliniendateien werden in der Regel explizit als Teil eines Service Packs oder eines Programmupdates installiert. Wenn Probleme mit der aktualisierten gemeinsamen Komponente auftreten sollten, können Sie die Überschreibungen in der Herausgeberrichtliniendatei ignorieren und den abgesicherten Modus verwenden. Der abgesicherte Modus wird durch <publisherPolicy apply="yes bestimmt |no"/>-Element, nur in der Anwendungskonfigurationsdatei. Es legt fest, ob die Informationen zur Herausgeberrichtlinienkonfiguration vom Bindungsprozess entfernt werden sollten.

Der abgesicherte Modus kann auf die gesamte Anwendung oder ausgewählte Assemblys angewendet werden. Demnach können Sie die Richtlinie für alle Assemblys aufheben, aus denen die Anwendung zusammengesetzt ist, oder für einige ausgewählte Assemblys aktivieren. Um die Herausgeberrichtlinie auf Assemblys selektiv gelten, die eine Anwendung besteht, <publisherPolicy apply=no/> fest und bestimmen die Assemblys, auf die Sie mithilfe des <dependentAssembly>-Elements beeinflusst werden möchten. Um Herausgeberrichtlinien auf alle Assemblys anzuwenden, legen Sie <publisherPolicy apply=no/> ohne abhängige Assemblyelemente fest. Weitere Informationen zur Konfiguration finden Sie unter Konfigurationsdateien.

Computerkonfigurationsdatei

Im dritten Schritt überprüft die Common Language Runtime die Computerkonfigurationsdatei. Diese Datei mit dem Namen Machine.config befindet sich auf dem lokalen Computer im Unterverzeichnis Config des Stammverzeichnisses, in dem die Common Language Runtime installiert ist. Diese Datei kann von Administratoren verwendet werden, um Assemblybindungsbeschränkungen für diesen Computer festzulegen. Die Einstellungen in der Computerkonfigurationsdatei haben Vorrang vor allen anderen Konfigurationseinstellungen. Dies bedeutet allerdings nicht, dass sich alle Konfigurationseinstellungen in dieser Datei befinden sollten. Die Version, die in der Administratorrichtliniendatei festgelegt ist, ist endgültig und kann nicht überschrieben werden. Überschreibungen, die in der Datei Machine.config festgelegt sind, haben Auswirkungen auf alle Anwendungen. Weitere Informationen über Konfigurationsdateien finden Sie unter Konfigurationsdateien.

Siehe auch

Konzepte

So sucht Common Language Runtime nach Assemblys

Schritt 2: Suchen nach Assemblys, auf die zuvor verwiesen wurde

Schritt 3: Durchsuchen des globalen Assemblycaches

Schritt 4: Suchen der Assembly mit CodeBases oder durch Sondierung

Partielle Assemblyverweise