Laden...

Auslesen einer anderen App.Config

Erstellt von walter0212 vor 8 Jahren Letzter Beitrag vor 8 Jahren 2.834 Views
W
walter0212 Themenstarter:in
3 Beiträge seit 2014
vor 8 Jahren
Auslesen einer anderen App.Config

Hallo Profis,

ich sehe gerade den wald vor lauter Bäumen nicht und habe mittlerweile einige unterschiedliche Varianten genutzt die mich nicht weiter gebracht haben. Ich lerne gerade App.Configs anzupassen, oder besser, versuche es 😦

Ich will die Daten einer App.Config (irgendeiner) auslesen, in ein Textfeld schreiben und renne dabei vor die Wand.

Aus meiner eigenen ist das auslesen absolut problemlos.

Bsp:

txt_source.Text = ConfigurationManager.AppSettings.Get("Source").ToString();

Um nun die Daten einer anderen App.Config auszulesen habe ich folgenden Weg probiert:

        private void bt_read_Click(object sender, EventArgs e)
        {
            opf.Filter = "App.Config|*.deploy";
            opf.Title = "Select a Config File";

            ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();

            if (opf.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
               configFile.ExeConfigFilename = opf.FileName; 
            }

            Configuration cfm = ConfigurationManager.OpenMappedExeConfiguration(configFile,          ConfigurationUserLevel.None);

            txt_target.Text = cfm.AppSettings.Settings["Source"].Value.ToString();
        }

Die Meldung die ich erhalte:

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Hmm, ich blicks gerade garnichts und würde mich echt freuen einen kleinen Schubs in die richtige Richtung zu bekommen,

Vielen Dank schon mal und viele Grüße,

walter0212

Kaffee neben dem Rechner ist schon ne coole Sache.

2.298 Beiträge seit 2010
vor 8 Jahren

Hallo,

das folgende ist eine abgewandelte Form einer Klasse, die ich verwende. Ich denke die sollte dir weiterhelfen (die Abwandlung ist jedoch ungetestet).


public class SettingsReader
{
    public AppSettingsSection GetAppSettings(string sConfigFile)
	{
		return (AppSettingsSection)this.GetConfigurationSection(sConfigFile, "appSettings");
	}
	 
	private ConfigurationSection GetConfigurationSection(string sConfigFile, string sSectionName)
	{
		Configuration myConfig = this.GetConfiguration(sConfigFile);
		return myConfig.GetSection(sSectionName);     
	}
	
	private Configuration GetConfiguration(string sConfigFile)
	{
		Configuration config = null;
		
		ExeConfigurationFileMap map = new ExeConfigurationFileMap { ExeConfigFilename = sConfigFile };
		config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);

		return config;
	}
}

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

W
walter0212 Themenstarter:in
3 Beiträge seit 2014
vor 8 Jahren

Habs hinbekommen 😁

Man, man, man. Manchmal sollte anstelle des Kaffees doch lieber ein Bier herhalten.

Ich habe vorher in der App.Config einige Bereiche auskommentiert um sicher zu gehen, dass nicht diese Daten geladen werden. Tja, da kann er auch nichts finden. dafür habe ich nun einige Wege an die Daten ranzukommen.

        private void bt_read_Click(object sender, EventArgs e)
        {
            opf.Filter = "App.Config|*.deploy";
            opf.Title = "Select a Config File";
            string path=null;

            if (opf.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                path= opf.FileName;
            }

            ExeConfigurationFileMap configMap = new ExeConfigurationFileMap();
            configMap.ExeConfigFilename = path;
            Configuration cfm = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);

            

            txt_source.Text = cfm.AppSettings.Settings["Source"].Value;
         }

@inflames2k & Jamikus: Danke für eure Feedbacks. Klar, den NullReference kenn ich, hatte vorher schon so gefühlte 20 mal gelesen. Naja, Montag halt.

Jetzt noch ConnectionString auslesen, alles ändern 6 speichern, und der Tag ist wieder gerettet.

Danke nochmal und viele Grüße

Kaffee neben dem Rechner ist schon ne coole Sache.