none
ConfigurationManager - PerUserRoamingAndLocal - App - wie und wo gespeichert? RRS feed

  • Frage

  • Hallo!
    
    Wo stelle ich UserSettings ein?
    Wo stelle ich ApplikationsSettings ein?
    Die User habe ich gefunden. Unklar wo die AppSettings der DLL hinterlegt werden. Wer kann es mir mitteilen? 
      DANKE.
      
      Grüße Andreas
    
    Ich habe eine Exe
    Ich habe eine DLL
    
    Die Exe hat
    
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
     <configSections>
      <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
       <section name="RMES.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
      </sectionGroup>
     </configSections>
     <appSettings>
      <!--<add key="language" value="de-DE" />-->
      <!--<add key="language" value="hu-HU" />-->
      <!--<add key="language" value="en-GB" />-->
      <add key="language" value="de-DE" />
     </appSettings>
     <userSettings>
      <RMES.Properties.Settings>
       <setting name="MyfrmSize" serializeAs="String">
        <value>970, 680</value>
       </setting>
       <setting name="MyfrmLoc" serializeAs="String">
        <value>0, 0</value>
       </setting>
       <setting name="MyfrmState" serializeAs="String">
        <value>Normal</value>
       </setting>
      </RMES.Properties.Settings>
     </userSettings>
    </configuration>
    
    
    Die DLL hat
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
          <section name="RCommunication.Implementations.MES.OpCon.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
          <section name="RCommunication.Implementations.MES.Test2.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
      </configSections>
      <userSettings>
        <RCommunication.Implementations.MES.Test2.Settings>
          <setting name="ID_Ref1" serializeAs="String">
            <value>stat-001</value>
          </setting>
          <setting name="ID_Refl2" serializeAs="String">
            <value>stat-002</value>
          </setting>
        </RCommunication.Implementations.MES.Test2.Settings>
      </userSettings>
      <applicationSettings>
        <RCommunication.Implementations.MES.Test2.Settings>
          <setting name="Timer_Jam" serializeAs="String">
            <value>30000</value>
          </setting>
          <setting name="Timer_Missing" serializeAs="String">
            <value>30000</value>
          </setting>
          <setting name="ConnectionFileMES" serializeAs="String">
            <value>C:\Configuration\Client.Config.xml</value>
          </setting>
        </RCommunication.Implementations.MES.Test2.Settings>
      </applicationSettings>
    </configuration>
    
    
    
    C:\Documents and Settings\Bauer\Local Settings\Application Data\Company\RTest.vshost.exe_Url_fbegxxbstv2eisxpw5cyxyzuguzfapnc\1.0.0.0
    
     private void btnConfiguration_Click(object sender, EventArgs e)
        {
          Configuration cfUser = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
          System.Diagnostics.Debug.WriteLine("Benutzer-Einstellungen gespeichert in:\r\n" + cfUser.FilePath);
          Configuration cfApp = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
          System.Diagnostics.Debug.WriteLine("Anwendungs-Einstellungen gespeichert in:\r\n" + cfApp.FilePath);
    
    
          Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
          Process.Start(Path.GetDirectoryName(cfUser.FilePath));
          Process.Start(Path.GetDirectoryName(cfApp.FilePath));
        }
    
    Hier <strong>werden keine Appsettings</strong> hinterlegt!!!!!
    Muss ich das manuell von Hand irgendwie kopieren? 
     Die AppStetting von der DLL in die AppSettings der EXE ?
    
     
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <userSettings>
        <RMES.Properties.Settings>
          <setting name="MyfrmSize" serializeAs="String">
            <value>970, 680</value>
          </setting>
          <setting name="MyfrmLoc" serializeAs="String">
            <value>7, 23</value>
          </setting>
          <setting name="MyfrmState" serializeAs="String">
            <value>Normal</value>
          </setting>
        </RMES.Properties.Settings>
      </userSettings>
    </configuration>	
    
    Mittwoch, 9. März 2011 16:40

Antworten

  • Hallo Andreas,

    • Wo stelle ich UserSettings ein?
      Wo stelle ich ApplikationsSettings ein?

    die applicationSettings kann man zum Beispiel Projekt/Eigenschaften/Einstellungen/ ... und dann im gewünschten Setting bei "Bereich" den Eintrag: 'Anwendung' wählen. Die Benutzersettings sind schon standardmäßig vorgegeben eben entsprechend auf 'Benutzer' stellen.
    Den Pfad hast Du ja schon gut herausgefunden mit OpenExeConfiguration ... bei None und dessen Eigenschaft FilePath hast Du den Dateipfad, wo die ApplicationSettings drin stehen. (Man beachte, der Normal User hat hier keine Schreibrechte).
    Bzgl. DLL-Einstellungen hatte ich hier mal einen Download gemacht. Da kann man sich einiges abschauen.

    [Einstellungen über mehrere Assemblies]
    http://Dzaebel.NET/Downloads/RTest.zip

    Ansonsten auch hier Hintergründe zu diesem Thema:

    [C# Dll config file - Stack Overflow]
    http://stackoverflow.com/questions/594298/c-dll-config-file

    weiterhin ggf. dazu interessant:

    [PropertyGrid ConnectionString Editor]
    http://dzaebel.net/PropertyGridConnectionString.htm

    Natürlich gäbe es auch Möglichkeiten über Frameworks wie Enterprise Library 5.0, aber das thematisiere ich mal jetzt nicht.

    Das ganze Konfigurations-Thema ist sehr gut in der Doku beschrieben:

    [Anwendungseinstellungen für Windows Forms]
    http://msdn.microsoft.com/de-de/library/0zszyc6e.aspx

     


    ciao Frank
    Mittwoch, 9. März 2011 19:55
  • Hallo Andreas,

    ersetze (in dem Fall) einfach in der "RTest.sln" über Notepad die zwei Zeilen:

    • Microsoft Visual Studio Solution File, Format Version 11.00
      # Visual Studio 2010

    mit:

    • Microsoft Visual Studio Solution File, Format Version 10.00
      # Visual Studio 2008

     


    ciao Frank
    • Als Antwort markiert Andreas Bauer2 Donnerstag, 10. März 2011 05:37
    Mittwoch, 9. März 2011 20:37

Alle Antworten

  • Hallo Andreas,

    • Wo stelle ich UserSettings ein?
      Wo stelle ich ApplikationsSettings ein?

    die applicationSettings kann man zum Beispiel Projekt/Eigenschaften/Einstellungen/ ... und dann im gewünschten Setting bei "Bereich" den Eintrag: 'Anwendung' wählen. Die Benutzersettings sind schon standardmäßig vorgegeben eben entsprechend auf 'Benutzer' stellen.
    Den Pfad hast Du ja schon gut herausgefunden mit OpenExeConfiguration ... bei None und dessen Eigenschaft FilePath hast Du den Dateipfad, wo die ApplicationSettings drin stehen. (Man beachte, der Normal User hat hier keine Schreibrechte).
    Bzgl. DLL-Einstellungen hatte ich hier mal einen Download gemacht. Da kann man sich einiges abschauen.

    [Einstellungen über mehrere Assemblies]
    http://Dzaebel.NET/Downloads/RTest.zip

    Ansonsten auch hier Hintergründe zu diesem Thema:

    [C# Dll config file - Stack Overflow]
    http://stackoverflow.com/questions/594298/c-dll-config-file

    weiterhin ggf. dazu interessant:

    [PropertyGrid ConnectionString Editor]
    http://dzaebel.net/PropertyGridConnectionString.htm

    Natürlich gäbe es auch Möglichkeiten über Frameworks wie Enterprise Library 5.0, aber das thematisiere ich mal jetzt nicht.

    Das ganze Konfigurations-Thema ist sehr gut in der Doku beschrieben:

    [Anwendungseinstellungen für Windows Forms]
    http://msdn.microsoft.com/de-de/library/0zszyc6e.aspx

     


    ciao Frank
    Mittwoch, 9. März 2011 19:55
  • Hallo Frank,

    ok sollte es schon sein.

    [Einstellungen über mehrere Assemblies]
    http://Dzaebel.NET/Downloads/RTest.zip

    ---------------------------
    Microsoft Visual Studio
    ---------------------------
    The selected file is a solution file, but was created by a newer version of this application and cannot be opened.
    ---------------------------
    OK  
    ---------------------------
    Wäre es denkbar zu konvertieren? 2008

    Grüße Andreas

    Mittwoch, 9. März 2011 20:06
  • Hallo Andreas,

    ersetze (in dem Fall) einfach in der "RTest.sln" über Notepad die zwei Zeilen:

    • Microsoft Visual Studio Solution File, Format Version 11.00
      # Visual Studio 2010

    mit:

    • Microsoft Visual Studio Solution File, Format Version 10.00
      # Visual Studio 2008

     


    ciao Frank
    • Als Antwort markiert Andreas Bauer2 Donnerstag, 10. März 2011 05:37
    Mittwoch, 9. März 2011 20:37
  • Hallo Frank,

    hat wunderbar geklappt. Umbenennen in VS2008.

     http://www1.minpic.de/bild_anzeigen.php?id=140522&key=74452996&ende

    Leider doch noch etwas unklar.

    Lieferung zum Kunden.

     

    DLL

    Hinterlegt in der app.config

    User

    App - unklar

    User, so wie es der User konfiguriert. -> klar wo das abgelegt ist. Gefunden

     

     

    Hauptanwendung .EXE

     

    Die hat auch eine App.config.

    Muss ich das jetzt händisch hier eintragen, die AppSettings der DLL, das ist unklar!

    Ich gebe ja nicht die App.config der DLL mit.

    Grüße Andreas

    Donnerstag, 10. März 2011 19:53