I am writing a C# .NET 2.0 .dll that is a plug in to a Larger application. The visual studio project for my module has a app.config file which is copied to a MyProj.dll.config along side of MyProj.dll.
The plan is that MyProj.dll.config will be edited after the .dll is deployed. I am trying to read my settings from that modified local file. I have tried pulling out the LocalFilesSettingsObject and changing it's application name to my .dll like this:
Properties.Settings config = Properties.Settings.Default;
SettingsContext context = config.Context;
SettingsPropertyCollection properties = config.Properties;
SettingsProviderCollection providers = config.Providers;
SettingsProvider configFile = Properties.Settings.Default.Providers["LocalFileSettingsProvider"];
configFile.ApplicationName = Assembly.GetExecutingAssembly().GetName().Name;
config.Initialize(context, properties, providers);
config.Reload();
That is not working. I am struggling to wrap my head around the whole .NET Settings mess. I'd like a recipe to finish this task. I would also like a link to a clear explanation (with examples) of how settings are supposed to work in .NET 2.0
You will need to load the x.dll.config
(with the Configuration API) yourself. All the automatic file handling (including the .Settings
) is all about machine.config/y.exe.config/user-settings.
To open a named config file:
- Reference
System.Configuration.dll
assembly. - Using
System.Configuration
Create code like:
Configuration GetDllConfiguration(Assembly targetAsm) { var configFile = targetAsm.Location + ".config"; var map = new ExeConfigurationFileMap { ExeConfigFilename = configFile }; return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); }
1- open app.config file in visual studio
2- in the "configuration" tag add your configurations in tag "appSettings" as bellow:
<configuration>
<appSettings>
<add key="UserName" value="aaa"/>
<add key="Password" value="111"/>
</appSettings>
</configuration>
3- in your code c#
var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
string userName = appConfig.AppSettings.Settings["UserName"].Value;
string password = appConfig.AppSettings.Settings["Password"].Value;
and do not forgot to add this 2 usings for "ConfigurationManager" and for "Assembly"
- using System.Configuration;
- using System.Reflection;
if the System.Configuration does not show, you must add the reference "System.Configuration" in the References
4- you can update the configurations for the dll as bellow:
- open the file "MyProj.dll.config"
- then update your configurations
来源:https://stackoverflow.com/questions/1208793/reading-dll-config-not-app-config-from-a-plugin-module