Wenden Sie eine App.config auf meine DLL-Assembly an?

8

Ich schreibe eine Klassenbibliothek als eine Abstraktion, die ich für die Anmeldung bei jeder Anwendung, jedem Dienst usw. verwende, die ich schreibe. Ich mache es anständig robust, indem ich es sehr konfigurierbar mache, um meine Anforderungen für die meisten Anwendungs ​​/ Service-Protokollierungsszenarien zu erfüllen, auf die ich stoße.

Die Config wurde entwickelt, um Dinge wie:

zu spezifizieren
  • Welche Protokollierungsstufe zu schreiben
  • Schreiben Sie eine Protokolldatei für alle Ebenen
  • Schreiben Sie in separate Dateien pro Level
  • Protokollierungs-Cutoff (periodisch, App-Ereignis, begrenzte Byte-Größe)
  • Protokolldateiablauf (löscht Protokolldateien nach dem Dateialter)
  • Schreiben Sie als einfachen Text oder XML
  • Protokolldateiformatspezifikation
  • Gibt an, ob Dateiname mit Datum
  • vorangestellt werden soll
  • Name der übergeordneten App
  • etc, etc, etc ...

Ich habe einige andere stackoverflow-Fragen bezüglich der Konfiguration von DLL-Assemblys gelesen, die zu einem Konflikt zwischen app.config für die hosting assembly / app führen. Ich glaube, dass meine Assembly gerade eine Konfigurationsdatei bereitstellen muss.

Ist das ein gutes Szenario für diesen Anlass? Ist es vielleicht eine bessere Idee, meine eigene Konfiguration in mein Projekt zu brennen, so dass mein Logger XML-Dateien liest, um Konfigurationswerte abzurufen?

    
jlafay 15.07.2010, 13:16
quelle

4 Antworten

8

Was Sie tun könnten, ist

  • Erstellen Sie einen benutzerdefinierten Konfigurationsabschnitt (z. B. mit dem Tool COnfiguration Section Designer )

  • Fügen Sie die Konfiguration Ihrer Assembly in eine separate MyAssembly.config -Datei

  • ein
  • Verweisen Sie auf die Konfigurationsdatei für die Assembly in der Konfiguration Ihrer Host-App:

    %Vor%

Auf diese Weise können Sie Ihre Konfiguration in eine separate Konfigurationsdatei "externalisieren", die Sie nur einmal (im Projekt Ihrer Assembly) haben, und jedes Projekt, das sie benötigt, benötigt diese Einstellungen nur in ihrer eigenen Konfigurationsdatei.

    
marc_s 15.07.2010, 13:32
quelle
3

Klingt wie ein benutzerdefinierter Konfigurationsabschnitt würde in Ihrem Fall gut funktionieren. Viele Bibliotheken, wie die Enterprise Library, tun genau dies. Lesen Sie den MSDN-Artikel zum Erstellen eines.

    
wsanville 15.07.2010 13:21
quelle
3

Der .NET-Konfigurationsmechanismus dient nicht zur Verarbeitung von Konfigurationsdateien für DLLs. Sie sollten Ihre Anwendung mit den entsprechenden Einstellungen konfigurieren und sie an die Klasse weitergeben, die Sie aus der DLL instanziieren.

Es ist möglich, Einstellungen zu einem DLL-Projekt hinzuzufügen, wie Sie es normalerweise für Anwendungen tun würden. Alles, was Sie dann tun müssen, ist, die relevanten Abschnitte und Einträge in die app.config der Anwendung manuell zu kopieren, und es wird funktionieren.

Es ist jedoch immer noch wahr, dass es keinen Sinn macht, die Konfigurationsdatei der DLL zu kopieren. Es wird nicht gelesen.

    
Thorsten Dittmar 15.07.2010 13:25
quelle
2

Ein anderer Mechanismus ist eine separate Konfigurationsdatei (* .dll.config) für Ihre Assembly. Die Technik wird hier gezeigt: Ссылка

Das obige Beispiel imitiert die Standardmethode app.config für Baugruppen.

Meiner Meinung nach sollte der Code zum Lesen der DLL-Konfiguration nur in der entsprechenden DLL und in einer separaten Klasse existieren - mit der alleinigen Verantwortung, Konfigurationseinträge aus der * .dll.config zu lesen. Dies ist eine nette Möglichkeit, die Konfigurationsdatei für eine Assembly ähnlich wie die Konfigurationsdatei (app.config) zu erstellen, die eine ausführbare Datei haben kann.

    
Anand Patel 15.03.2011 08:16
quelle

Tags und Links