Share via


Schritt 1: Untersuchen der Konfigurationsdateien

Aktualisiert: November 2007

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 ein <assemblyBinding>-Element enthalten, das den Bindungsprozess umleitet. Die untergeordneten Elemente des <assemblyBinding>-Elements enthalten das <dependentAssembly>-Element. Die untergeordneten Elemente des <dependentAssembly>-Elements enthalten das <assemblyIdentity>-Element, das <bindingRedirect>-Element und das <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. So lautet die Konfigurationsdatei für C:\Programme\Myapp\Myapp.exe beispielsweise C:\Programme\Myapp\Myapp.exe.config. Wenn ein Browser verwendet wird, muss die HTML-Datei das <link>-Element verwenden, um explizit auf die Konfigurationsdatei zu zeigen.

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 Assembly Linker-Tool (Al.exe)-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.

Abgesicherter Modus

Herausgeberrichtliniendateien werden in der Regel explizit als Teil eines Service Packs oder einer Programmaktualisierung 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 das <publisherPolicy apply="yes|no"/>-Element bestimmt, das nur in der Anwendungskonfigurationsdatei gespeichert ist. 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 der Anwendung selektiv anzuwenden, legen Sie <publisherPolicy apply=no/> fest und bestimmen die Assemblys, auf die sich das <dependentAssembly>-Element auswirken soll. Um Herausgeberrichtlinien auf alle Assemblys anzuwenden, legen Sie <publisherPolicy apply=no/> ohne abhängige Assemblyelemente fest. Weitere Informationen zur Konfiguration finden Sie unter Anwendungskonfigurationsdateien.

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

Bereitstellungsszenarien für .NET Framework-Anwendungen

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