问题
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
回答1:
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); }
回答2:
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