AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Multiple app.config Dateien

Ein Thema von Jelly · begonnen am 12. Jun 2007 · letzter Beitrag vom 12. Jun 2007
Antwort Antwort
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

Multiple app.config Dateien

  Alt 12. Jun 2007, 13:36
Ich blicks grad nicht, weil ich die Logik nicht verstehe.

Zu jedem .NET Projekt kann ich eine app.config Datei erstellen, um gewisse Parameter abzulegen. So hab ich es gemacht mit eine .NET Library, die dann folgende .config File hat, um die Adresse eines Webservices abzulegen:

Device.dll.config
XML-Code:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="Device.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <applicationSettings>
        <Device.Properties.Settings>
            <setting name="Device_OpcWebservice_TOPCService" serializeAs="String">
                <value>http://pa-tpr/CTIOPC/opcservice.asmx</value>
            </setting>
        </Device.Properties.Settings>
    </applicationSettings>
</configuration>
Der Quellcode liest an gegebener Stelle die URL aus, soweit ganz schön.

Jetzt habe ich aber noch weitere .NET Bibliotheken erstellt, alle mit ihren eigenen .config files.

In meinem Winforms Projekt nutze ich nun gerne all diese Bibliotheken, und binde sie lediglich als Referenz in mein Projekt ein. Aber was ist mit den jeweiligen .config Dateien.

Ich würde mir vorstellen, dass jede DLL seine .config Datei beibehält, aber dem ist nicht so. Die Datei Device.dll.config wird z.B. im Winforms Projekt ignoriert.
Wo sind denn nun letztendlich die Konfigurationsparameter abgelegt. Es muss doch irgendwie weiter gewährleistet sein, dass jede DLL seine eigene .config File hat.
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#2

Re: Multiple app.config Dateien

  Alt 12. Jun 2007, 14:13
Hallo Tom,

meistens geht die Frage umgekehrt: eine gemeinsame config für mehrere Applikationen...

Vorschlag: Mit der Assembly.GetAssembly-Methode und Assembly.Location bekommst Du in jeder beliebigen Klasse den Pfad der DLL und durch Verknüpfung mit ".config" Pfad und Namen der config-Datei. Auf diese kannst Du mit ConfigurationManager.OpenMappedExeConfiguration() zugreifen.

Problem: Das geht erst unter NET 2.0. Für NET 1.1 ist mir kein Weg bekannt; der ConfigurationManager ist einer der Vorzüge eines Wechsels.

Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Multiple app.config Dateien

  Alt 12. Jun 2007, 14:24
Läuft unter .NET 2.0 (VS2005), das ist nicht das Problem.

Die Device.dll greift auf einen Webservice zu, den ich bequem im VS eingebunden habe. Dieser hat mir die oben gepostete .config Datei angelegt, die nachher auch als device.dll.config im Compileverzeichnis ablegt.

Aber in meinem Endprojekt wird diese .config ignoriert. Und am Quellcode den mir der VS Assistent erstellt hat um auf den Webservice zuzugreifen möchte ich eigentlich nichst ändern, da dies wieder überschrieben wird, sollte sich der Webservice mal ändern.

Mag sein, dass sich nur in Verbindung mit einem Webservice diese Problematik stellt, aber der Grund, dass die Url in einer Konfigurationsdatei abliegen muss, ist weil der Webservice mehrfach auf einem System installiert werden kann, einen pro Projekt.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Multiple app.config Dateien

  Alt 12. Jun 2007, 15:05
OK, ich glaube ich habe ein Workaround gefunden, da ich gerad gemerkt hab, dass die Url Property vom Webservice auch beschreibbar ist. Somit kann ich die Url mit den Reflection Methoden aus einer device.config auslesen und einfach neu setzen. Weil das erst beim Aufruf einer Webmethode passiert, ist der von VS erstellte Code davon nicht betroffen, und darf somit beliebig oft neu generiert werden.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Multiple app.config Dateien

  Alt 12. Jun 2007, 15:13
Du musst sie zusammenfügen, in eine Datei. Das ist ja dann die Config-Datei deiner Appliaktion und dorther kriegen auch alle referenzierten Assemblies ihre Konfigwerte.
Nehmen wir ann ich erzeuge eine App namens "Jelly.Config" und eine Classlib namens "Jelly.Config.ClassLibrary".
Der App gebe ich eine Appsetting namens "SomeAppSetting", der Classlib eine namens "SomeString".
In der Classlib habe ich nur das hier als Code:
Delphi-Quellcode:
uses
  Jelly.Config.ClassLibrary.Properties;

type
  SomeClass = public static class
  public
    class property SomeString : String
      read Settings.Default.SomeString;
  end;
Und in der app habe ich das hier:
Delphi-Quellcode:
Console.WriteLine('app setting: {0}', Settings.Default.SomeAppSetting);
Console.WriteLine('lib setting: {0}', SomeClass.SomeString);
Wenn ich jetzt beide Konfigdateien zusammenschiebe...
XML-Code:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
      <section name="Jelly.Config.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      <section name="Jelly.Config.ClassLibrary.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>
  <applicationSettings>
    <Jelly.Config.Properties.Settings>
      <setting name="SomeAppSetting" serializeAs="String">
        <value>Miep!</value>
      </setting>
    </Jelly.Config.Properties.Settings>
    
    <Jelly.Config.ClassLibrary.Properties.Settings>
      <setting name="SomeString" serializeAs="String">
        <value>Hallihallo...</value>
      </setting>
    </Jelly.Config.ClassLibrary.Properties.Settings>
  </applicationSettings>
</configuration>
... bekomme ich den Output:
Code:
app setting: Miep!
lib setting: Hallihallo...
Geht also.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Multiple app.config Dateien

  Alt 12. Jun 2007, 15:23
Danke Robert, mal wieder hast du mich dabei ertappt, dass ich von .NET nun wirklich noch nicht die grosse Ahnung hab

Aber ist das denn aber wirklich im Sinne des Erfinders. Warum getrennte Dinge (Lib und Applikations Parameter) in einer einzigen Konfigurationsdatei unterbringen. Das bin ich so nicht gewohnt, und bedarf wohl einfach nur einer anderen Denkweise.

Kann man dieses Zusammenführen von mehreren .config Dateien denn irgendwie automatisieren. Im Übrigen überschreibt das VS mir beim Kompilieren der Applikation jedes mal die existierende .config Datei im Debug Verzeichnis
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Multiple app.config Dateien

  Alt 12. Jun 2007, 15:40
Zitat von Jelly:
ann man dieses Zusammenführen von mehreren .config Dateien denn irgendwie automatisieren. Im Übrigen überschreibt das VS mir beim Kompilieren der Applikation jedes mal die existierende .config Datei im Debug Verzeichnis
Du hast doch immer noch die Defaultwerte.
Wenn du in den Projekteinstellungen deiner Lib unter SomeString nun "Möööp" geschrieben hättest, und danach den Settingskey aus der App.config der Echse entfernst, steht wie Möööp drin.
Ist doch genau das gleiche wie bei allen Settings, egal ob es DataProvider oder sonstwas sind.
IMHO ist das Konfigsystem in .Net sehr genial und das ich zentral für eine App in nur einer Datei alle Settings für alle verwendeten Bibliotheken zur Hand habe finde ich eigentlich ziemlich cool und handlich.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Multiple app.config Dateien

  Alt 12. Jun 2007, 15:43
Zitat von Jelly:
Kann man dieses Zusammenführen von mehreren .config Dateien denn irgendwie automatisieren. Im Übrigen überschreibt das VS mir beim Kompilieren der Applikation jedes mal die existierende .config Datei im Debug Verzeichnis
Natürlich macht es das, du solltest ja auch die App.config in deinem Projekt editieren.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Multiple app.config Dateien

  Alt 12. Jun 2007, 16:47
Zitat von Elvis:
Natürlich macht es das, du solltest ja auch die App.config in deinem Projekt editieren.

(Mehr fällt mir dazu nicht ein)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz