Anwendungskonfigurationsdateien

Eine Anwendungskonfigurationsdatei ist eine XML-Datei, die zum Steuern der Assemblybindung verwendet wird. Es kann eine Anwendung von der Verwendung einer Version einer parallelen Assembly zu einer anderen Version derselben Assembly umleiten. Dies wird als anwendungsspezifische Konfiguration bezeichnet. Eine Anwendungskonfigurationsdatei gilt nur für ein bestimmtes Anwendungsmanifest und abhängige Assemblys. Isolierte Komponenten, die mit einem eingebetteten ISOLATIONAWARE_MANIFEST_RESOURCE_ID Manifest kompiliert werden, erfordern eine separate Anwendungskonfigurationsdatei. Manifeste, die mit CreateActCtx verwaltet werden, erfordern eine separate Anwendungskonfigurationsdatei.

Die durch eine Anwendungskonfigurationsdatei angegebene Umleitung kann die Assemblyversionen überschreiben, die von Anwendungsmanifesten und Herausgeberkonfigurationsdateien angegeben werden. Wenn beispielsweise eine Herausgeberkonfigurationsdatei angibt, dass alle Verweise auf eine Assembly von Version 1.0.0.0 zu 1.1.0.0 umgeleitet werden, kann eine Anwendungskonfigurationsdatei verwendet werden, um eine bestimmte Anwendung zur Verwendung von Version 1.0.0.0 umzuleiten. Eine Anwendungskonfigurationsdatei gilt nur für das angegebene Anwendungsmanifest und abhängige Assemblys.

Eine vollständige Liste des XML-Schemas finden Sie unter Anwendungskonfigurationsdateischema.

Anwendungskonfigurationsdateien enthalten die in der folgenden Tabelle gezeigten Elemente und Attribute.

Element Attribute Erforderlich
configuration Ja
windows Ja
publisherPolicy Ja
Anwenden Ja
Laufzeit Nein
assemblyBinding Ja
Sondieren Nein
Privatepath Ja
Abhängigkeit Nein
dependentAssembly Ja
assemblyIdentity Ja
type Ja
name Ja
language Nein
Processorarchitecture Ja
version Ja
publicKeyToken Nein
bindingRedirect Ja
oldVersion Ja
Newversion Ja

Speicherort

Anwendungskonfigurationsdateien müssen am selben Speicherort wie das Anwendungsmanifest der Anwendung installiert werden.

Dateinamensyntax

Der Name einer Anwendungskonfigurationsdatei ist der Name der ausführbaren Anwendungsdatei, gefolgt von .config.

Beispielsweise würde eine Anwendungskonfigurationsdatei, die auf Example.exe oder Example.dll verweist, die im folgenden Beispiel gezeigte Dateinamensyntax verwenden. Sie können das Feld für <die Ressourcen-ID> weglassen, wenn Sie die Konfigurationsdatei als separate Datei installieren oder wenn die Ressourcen-ID 1 ist.

example.exe.<Ressourcen-ID>.config

example.dll.<Ressourcen-ID>.config

Elemente

Bei Namen von Elementen und Attributen wird die Groß-/Kleinschreibung beachtet. Bei den Werten von Elementen und Attributen wird die Groß-/Kleinschreibung nicht beachtet, mit Ausnahme des Werts des Typattributes.

Konfiguration

Ein Containerelement für die Windows- und Runtimeelemente einer Anwendungskonfigurationsdatei. Erforderlich.

Windows

Enthält die Teile der Anwendungskonfigurationsdatei, die für die Umleitung von Win32-Assemblys gelten.

Hinweis

Der Autor einer Anwendung sollte keine Konfigurationsdatei mit einem Windows-Unterelement als Teil seiner Anwendung einschließen. Dies kann zulässig sein, wenn der einzige Zweck der Konfigurationsdatei darin besteht, die privatePath-Funktionalität eines Überprüfungselements zu aktivieren. Das Überprüfungselement ist auf Systemen vor Windows Server 2008 R2 und Windows 7 nicht verfügbar.

publisherPolicy

Gibt an, ob eine Herausgeberrichtlinie angewendet werden soll.

Dieses Element verfügt über die in der folgenden Tabelle aufgeführten Attribute.

attribute BESCHREIBUNG
Anwenden Der Wert "ja" wendet die Herausgeberrichtlinie an. Dies ist die Standardeinstellung. Der Wert "no" gilt nicht für die Herausgeberrichtlinie.

Laufzeit

Enthält die Teile der Anwendungskonfigurationsdatei, die für die Umleitung von .NET-Assemblys gelten.

assemblyBinding

Enthält die Umleitungsinformationen für die Anwendung und die Assembly, die von dieser Anwendungskonfigurationsdatei betroffen sind. Das erste Unterelement von assemblyBinding muss eine assemblyIdentity sein, die die Anwendung identifiziert.

Ab Windows Server 2008 R2 und Windows 7 kann ein assemblyBinding-Element ein Unterelement zum Überprüfen enthalten.

Prüfen

Ein optionales Unterelement eines assemblyBinding-Elements , das die Suche nach Assemblys in zusätzliche Verzeichnisse erweitert. Die zusätzlichen Verzeichnisse müssen nicht Unterverzeichnisse des Verzeichnisses der Assembly sein.

Hinweis

Dieses Element ist auf Systemen vor Windows Server 2008 R2 und Windows 7 nicht verfügbar und kann nur innerhalb eines Windows-Elements verwendet werden.

Dieses Element verfügt über die in der folgenden Tabelle aufgeführten Attribute.

attribute BESCHREIBUNG
Privatepath Gibt die relativen Pfade von Unterverzeichnissen des Basisverzeichnisses der Anwendung an, die Assemblys enthalten können. Es können maximal neun Unterverzeichnispfade angegeben werden. Trennen Sie jeden Unterverzeichnispfad durch ein Semikolon.

Sie können den Doppelpunkt-Sonderbezeichner in einem Pfad verwenden, um das übergeordnete Verzeichnis des aktuellen Verzeichnisses anzugeben. Es können nicht mehr als zwei Ebenen über dem aktuellen Verzeichnis mit Doppelpunkten angegeben werden. Verwenden Sie keine dreifachen Punkte. Beispielsweise überprüft eine Anwendung, die das folgende Überprüfungselement verwendet, zusätzliche Verzeichnisse für eine Assembly.

<probing privatePath="bin;..\bin2\subbin;bin3"/>

dependency

Ein Containerelement für mindestens eine abhängigeAssembly. Jede dependentAssembly kann sich in genau einer Abhängigkeit befinden. Dieses Element weist keine Attribute auf. Optional.

dependentAssembly

Das erste Unterelement muss ein assemblyIdentity-Element sein, das die parallele Assembly identifiziert, die von der Anwendungskonfigurationsdatei umgeleitet wird. Ein dependentAssembly verfügt über keine Attribute.

assemblyIdentity

Als erstes Unterelement eines assemblyBinding-Elements beschreibt assemblyIdentity eine Anwendung und identifiziert sie eindeutig. Die Anwendungskonfigurationsdatei leitet die Bindung dieser Anwendung an parallele Assemblys um. Die folgende assemblyIdentity gibt beispielsweise an, dass sich die Anwendungskonfigurationsdatei auf die Bindung der Anwendung mysampleApp an parallele Assemblys auswirkt. Die Assemblys, die umgeleitet werden, werden in einer dependentAssembly identifiziert.

<assemblyIdentity processorArchitecture="X86" name="Microsoft.Windows.mysampleApp" type="win32" version="1.0.0.0"/>

Als erstes Unterelement eines dependentAssembly-Elements beschreibt assemblyIdentity eine parallele Assembly, von der die Anwendung abhängt. Die Anwendungskonfigurationsdatei konfiguriert die Identität dieser erforderlichen Assembly neu. Beispielsweise konfigurieren die folgende assemblyIdentity und bindingRedirect eine Abhängigkeit von Microsoft.Windows.SampleAssembly von Version 2.0.0.0 auf Version 2.1.0.0 neu.

<dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32"
          name="Microsoft.Windows.SampleAssembly"
          processorArchitecture="x86"
          publicKeyToken="0000000000000000"/>
         <bindingRedirect oldVersion="2.0.0.0" newVersion="2.1.0.0"/>
      </dependentAssembly>
</dependency>

Beachten Sie, dass jede assemblyIdentity , die in einem dependentAssembly enthalten ist , genau mit der assemblyIdentity im eigenen Assemblymanifest der Assembly übereinstimmen muss.

Das assemblyIdentity-Element weist die folgenden Attribute auf. Es enthält keine Unterelemente.

attribute BESCHREIBUNG
type Der Wert muss win32 (Kleinschreibung) sein. Erforderlich.
name Das name-Attribut identifiziert die Anwendung, die von der Anwendungskonfigurationsdatei oder der Assembly betroffen ist, die umgeleitet wird. Verwenden Sie das folgende Format für den Namen: Organization.Division.Name. Erforderlich. Beispiel: Microsoft.Windows.MysampleApp oder Microsoft.Windows.MysampleAsm.
language Gibt die Sprache an. Optional. Geben Sie für eine assemblyIdentity , die auf eine Assembly verweist, den DHTML-Sprachcode an, wenn die Assembly sprachspezifisch ist. Wenn die Assembly für den weltweiten Gebrauch (sprachneutral) ist, legen Sie den Wert auf "*" fest.
Processorarchitecture Gibt den Prozessor an, der die Anwendung ausführt.
version Gibt die Version der Anwendung oder Assembly an. Verwenden Sie vierteilige Versionssyntax: mmmm.nnnnn.oooo.pppp. Erforderlich.
publicKeyToken Für eine assemblyIdentity , die auf eine Assembly verweist, ist eine 16-stellige hexadezimale Zeichenfolge, die die letzten 8 Bytes des SHA-1-Hashs des öffentlichen Schlüssels darstellt, unter dem die Assembly signiert ist. Der öffentliche Schlüssel, der zum Signieren des Katalogs verwendet wird, muss 2048 Bits oder höher sein. Erforderlich für alle gemeinsam genutzten parallelen Assemblys.

bindingRedirect

Das bindingRedirect-Element enthält Umleitungsinformationen für die Bindung der Assembly. Jede bindingRedirect muss in genau einer dependentAssembly enthalten sein. Die vierteilige Versionssyntax der neuen Version und der alten Version muss die gleiche Haupt- und Nebenversion angeben.

Dieses Element verfügt über die Attribute, die in der folgenden Tabelle aufgeführt sind.

attribute BESCHREIBUNG
oldVersion Gibt die Assemblyversion an, die überschrieben und umgeleitet wird. Verwenden Sie die vierteilige Versionssyntax nnnnn.nnnnnn.nnn. Geben Sie einen Versionsbereich durch einen Bindestrich ohne Leerzeichen an. Beispiel: 2.14.3.0 oder 2.14.3.0 2.16.0.0. Erforderlich.
Newversion Gibt die Version der Ersatzassembly an. Verwenden Sie die vierteilige Versionssyntax nnnnn.nnnnn.nnn.

Bemerkungen

Anwendungskonfigurationsdateien geben keine Dateien an.

Beispiel

<bindingRedirect oldVersion="1.0.0.0" newVersion="1.0.10.0"/>
<bindingRedirect oldVersion="1.0.50.2011-1.0.60.65535" newVersion="1.0.70.0"/>