Configuration settings in 3.5 is driving me nuts… Help! 😉
I have a class library (Named ADI), that needs some configuration settings from the project using it (like connectionstring, filesystem locations etc).
I want to define these settings in my Windows Forms/Web Projects App.Config or Web.Config, like other settings.
Here is part of my app.config for my windows forms application:
<applicationSettings>
<PhotoImportRobot.My.MySettings>
<setting name="ADIImageRoot" serializeAs="String">
<value>C:DataTempADIOriginal</value>
</setting>
<setting name="ADIImageVariantsRoot" serializeAs="String">
<value>C:DataTempADIVariants</value>
</setting>
</PhotoImportRobot.My.MySettings>
</applicationSettings>
How do I access that from my class library??
I tried this:
System.Configuration.ConfigurationManager.AppSettings("ADIImageVariantsRoot")
What to do?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
If you’re not after structured settings, the appSettings section just takes key-value pairs:
<appSettings> <add key="ADIImageRoot" value="C:DataTempADIOriginal" /> <add key="ADIImageVariantsRoot" value="C:DataTempADIVariants" /> </appSettings>
This will enable you to access them via the AppSettings dictionary:
ConfigurationManager.AppSettings["ADIImageVariantsRoot"]
As you would expect.
Alternatively, if you need more structure to your configuration (i.e. more than just strings, or a collection of settings), you can look into using a configuration section of your own, using a ConfigurationSection, and its relevant parts.
Method 2
You seem to be using the Settings stuff built into visual studio. This generates a wrapper class related to the file, called, in your case MySettings.
You can thus write something like MySettings.Instance.ADIImageVariantsRoot. (If you click show all files in the project toolbox, it will show you the .settings.cs file and you can see all the gory details)
Method 3
Add reference System.web;
add name space and user
using System.Web.Configuration;
String webConfigValue;
webConfigValue = WebConfigurationManager.AppSettings["employeeDB"].ToString();
to read the web config value
<appSettings>
<add key="employeeDB" value="Data Source=servername;Initial Catalog=employee;Persist Security Info=True;User ID=userid;Password=password;"/>
</appSettings>
Method 4
For ApplicationSettings you should use:
[YourNamespace].Properties.Settings.Default.[YourSettingName]
This provides a strongly typed reference to your setting and returns the default value if one is not defined in the web.config file. For AppSettings you should use:
System.Web.Configuration.WebConfigurationManager.AppSettings
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0