2016-04-28 9 views
1

Wir haben ein app.config wir mit Carbonators verwenden:ein Element in App.config Extend

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="carbonator" type="Crypton.Carbonator.Config.CarbonatorSection, Crypton.Carbonator"/> 
    </configSections> 

    <carbonator defaultCulture="en-US" logLevel="1" collectionInterval="1000" reportingInterval="1000" > 
    <statsd server="127.0.0.1" port="8125" /> 
    <counters> 
     <add path="processor_information.pct_processor_time.total" category="Processor" counter="% Processor Time" instance="_Total" /> 
     <add path="memory.available_MBytes" category="Memory" counter="Available MBytes" instance="" /> 
     <add path="memory.pct_commited_bytes_in_use" category="Memory" counter="% Committed Bytes In Use" instance="" /> 
    </counters> 
    </carbonator> 
</configuration> 

Wir wollen damit die Benutzer ihre eigenen Zähler in einer externen Konfigurationsdatei konfigurieren, die wir aus dem <counters> Element referenzieren . Zum Beispiel möchten wir die Benutzer config-Datei aussehen lassen:

<add path="logical_disk.pct_free_space.C" category="LogicalDisk" counter="% Free Space" instance="C:" /> 
<add path="logical_disk.disk_read_bytes_per_sec.C" category="LogicalDisk" counter="Disk Read Bytes/sec" instance="C:" /> 
<add path="logical_disk.disk_write_bytes_per_sec.C" category="LogicalDisk" counter="Disk Write Bytes/sec" instance="C:" /> 

Ich weiß nicht einmal wissen, ob dies möglich ist, außerhalb eines appConfig Elements, aber jede Hilfe ist willkommen.

Antwort

3

Nach this answer sollte es möglich sein. Der gleiche Weg ist auch in this article beschrieben.

Aber ich denke nicht, dass es aus einem Grund eine gute Idee ist - wenn ein Benutzer einen Fehler in seiner Konfigurationserweiterung macht, verhindert es die Anwendung ausgeführt werden, da die Konfiguration der Anwendung ungültig wurde.

Ich würde lieber die Konfiguration in der Datei app.config verwenden, um Standardwerte bereitzustellen und einige Benutzerkonfigurationen selbst zu implementieren. In diesem Fall können Sie das gewünschte Konfigurationsformat verwenden, zum Beispiel JSON, das für Benutzer auch besser (einfacher zu erstellen und zu bearbeiten) wäre. In Ihrer Anwendung verbinden Sie einfach beide Konfigurationen (app.config Werte sind Standardwerte, die von der Konfiguration des Benutzers überschrieben werden).

+0

Danke für die Antwort. Wir untersuchen immer noch den besten Ansatz, aber ich werde Ihre Vorschläge berücksichtigen. – lhoworko

+0

Gern geschehen. Ich würde definitiv die benutzerdefinierte Konfiguration für die Benutzerkonfiguration implementieren, weil Sie alles steuern können. Sie können dem Benutzer bessere Fehlermeldungen präsentieren (eigentlich sinnvolle Nachrichten, da die Standardfehlermeldungen über missformierte 'app.config' für den Benutzer ziemlich verwirrend sein können). –