Freigeben über


(3) Pfad für private Komponenten

Das bereits beschriebene Client-Beispiel hat einen wesentlichen Schwachpunkt: Client.exe und Stringer.dll müssen sich im selben Verzeichnis befinden. In der Praxis ist es jedoch oft vorteilhaft, eine Verzeichnisstruktur zum Verwalten von Komponenten zu verwenden. .NET Framework stellt einen Konfigurationsmechanismus bereit, der es Administratoren ermöglicht, ein Verzeichnis anzugeben, aus dem private Komponenten geladen werden.

In Anlehnung an das vorherige Client-Beispiel enthält das Unterverzeichnis 3_SimplePath eine Version des Programms, die ein privates Verzeichnis verwendet. Der Quellcode ist identisch, der Buildprozess wurde jedoch zur Veranschaulichung geändert, und Stringer.dll wird im Unterverzeichnis Stringer erstellt.

csc /target:library /out:Stringer\Stringer.dll  
   ... Stringer\Stringer.cs
csc /reference:Stringer\Stringer.dll ... Client.cs

Mit der /reference:-Compileroption können Sie zwar beim Kompilieren des Programms eine Komponente in einem Unterverzeichnis ermitteln, Sie benötigen jedoch eine separate XML-basierte Anwendungskonfigurationsdatei, um zur Laufzeit Komponenten zu unterstützen, die sich in anderen Verzeichnissen befinden. Für ausführbare Clientdateien, wie die im Lernprogramm beschriebenen, befindet sich die Konfigurationsdatei im selben Verzeichnis wie die ausführbare Datei. Der Name entspricht dem Namen der ausführbaren Datei und besitzt die Erweiterung .config. Die Beispieldatei Client.exe.config gibt ein privatePath-Tag an:

Auflistung 1.. Konfigurationsdatei für Client.exe (Client.exe.config)

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

Wenn sich die Konfigurationsdatei im selben Verzeichnis befindet wie die ausführbare Datei, verwendet die .NET-Umgebung das privatePath-Tag zur Laufzeit, um zu ermitteln, wo, außer im Anwendungsverzeichnis, noch nach Komponenten gesucht werden soll.

**Hinweis   **Beim Laden einer Assembly sucht die Runtime auch nach einem privaten Pfad, der den Namen der Assembly besitzt.

Siehe auch

Weitergeben von Anwendungen mit privaten Pfaden | (4) Eine gemeinsam genutzte Komponente | (5) Komponentenversionen | Zusammenfassung: Verpacken und Weitergeben von Anwendungen | Anhang A: Weitere Informationen zum Verpacken und Weitergeben | Anhang B: Tools zum Verpacken und Weitergeben