2017-10-27 1 views
0

Ich habe eine WPF-Anwendung (MVVM) mit mehreren Projekten. Im Hauptprojekt habe ich eine App.config-Datei. Ich habe ein paar Einstellungen über Settings.settings hinzugefügt. Die Datei App.config wie folgt aussieht:WPF configurationmanager.appsettings Sammlung ist leer

<configSections> 
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 
    <section name="VSAutomation.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </sectionGroup> 
<section name="log4net" type="log4net.config.Log4NetConfigurationSectionHandler, log4net" /> 

log4net stuff here... 
<applicationSettings> 
    <VSAutomation.Properties.Settings> 
     <setting name="SimDir" serializeAs="String"> 
      <value>"C:\Program Files (x86)\sim"</value> 
     </setting> 
    </VSAutomation.Properties.Settings> 
</applicationSettings> 

Wenn ich versuche, diese Einstellungen für den Zugriff von einem der anderen Module

string appFolder = ConfigurationManager.AppSettings.Get("SimDir"); 

Es gibt null zurück. Wenn ich einen Haltepunkt setzen und zu bewerten

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile 

Er verweist auf die richtige appname.exe.config Datei und die Einstellungen korrekt sind.

ConfigurationManager.AppSettings.Count kehrt 0

Das ist wirklich seltsam. Ich habe hier Dutzende von Fragen StackOverflowflow angeschaut, aber keine Lösung gefunden. Bezieht es sich auf den Abschnitt log4net?

+0

https://stackoverflow.com/questions/2101273/how-do-i-retrieve-applicationsettings-from-a-loaded-app-config-file Sie sollten darauf zugreifen können, indem nur die Eingabe 'VSAutomation .Properties.Settings.SimDir' –

+0

Ich habe das versucht, aber ich bekomme einen Compilerfehler, der besagt, dass VSAutomation im aktuellen Kontext nicht existiert. Ich versuche, auf diese Einstellungen von einem anderen Projekt (mvvm-Modul) in der Lösung zuzugreifen. Ich habe bereits eine Referenz vom Startprojekt zu diesem Projekt, daher kann ich dem Start keine Referenz aus diesem Projekt hinzufügen. – cce1911

Antwort

0

Hier ist meine Lösung, nur für den Fall, dass jemand diese spezifische Version des Problems hat. Ich habe versucht, die Benutzeroberfläche Settings.settings in Visual Studio zu verwenden. Es hat die oben gezeigte Struktur erstellt. Nachdem ich this article genau überprüft habe, habe ich versucht, einen appSettings-Abschnitt zu erstellen, und das hat funktioniert.

<appSettings> 
    <add key="SimDir" value="C:\Program Files (x86)\sim"/> 
</appSettings> 

So, jetzt

string appFolder = ConfigurationManager.AppSettings.Get("SimDir"); 

ruft den richtigen Wert.

Verwandte Themen