Autor Beitrag
CopWorker1
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mo 23.11.20 13:13 
Hallo zusammen,

jetzt habe ich ein C# Projekt als DLL erstellt.
Das funktioniert auch erstaunlich gut.
Nur eine Hürde habe ich noch.
Steppe ich mit dem Debugger in die DLL rein, da komme ich an die Stellen an
denen ich aus der "App.config" einige Parameter auslesen will.
ausblenden C#-Quelltext
1:
string str = ConfigurationManager.AppSettings.Get(strKey);					

Leider wird hier auf die "App.config" des aktuell Programms zugegriffen und
nicht auf die "App.config" der eingebundenen DLL.

Ist die irgendwie zu beeinflussen, oder wie macht man das eleganter Weise sonst?

Vielen Dank für eure Tipps.
Grüße von CopWorker1


Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Mo 23.11.2020 um 15:29
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 23.11.20 15:28 
Suchst du vielleicht solch ein Beispiel?
www.bearcanyon.com/d...et/#AssemblySettings
Dort findest du eine AssemblySettings Klasse, die das macht.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 23.11.20 19:13 
Wie der Name App der App.config schon sagt bezieht sich die eigentlich immer auf die Application/Executable. Eine Dll/Assembly hat normalerweise keine Config.
Darum sollte die erste Wahl sein die Einstellungen die du brauchst in die App.config der Applikation zu mergen.

Sollte das aus irgendeinem Grund nicht gehen und es sich nicht anbieten einfach irgendein anderes Verfahren zum speichern von Einstellungen zu benutzen (lesen von xml/json/yaml oder was es sonst noch so gibt ist unter .Net ja mal so eher kein Problem) dann hat der ConfigurationManager eine OpenExeConfiguration Methode die du benutzen kannst.

ausblenden C#-Quelltext
1:
2:
var config = ConfigurationManager.OpenExeConfiguration(MyLovelyConfigPath);
string str = config.AppSettings.Setting[strKey].Value;
CopWorker1 Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 24.11.20 10:28 
Hallo zusammen,

vielen Dank für den Tipp.

So mach ich das jetzt:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
string strValue;
private readonly Configuration cfgDllConfig, cfgExeConfig;
cfgDllConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location); //Zugriff auf "App.dll.config"
cfgExeConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);  //Zugriff auf "App.exe.config"
strValue = cfgDllConfig AppSettings.Settings["KeyName"].Value;
strValue = cfgExeConfig AppSettings.Settings["KeyName"].Value;

Funktioniert wie ich mir das vorstelle.
Vielen Dank nochmals.

CopWorker1