从插件模块中读取dll.config(不是app.config!)

我正在编写一个C#.NET 2.0 .dll,它是一个大型应用程序的插件。 我的模块的visual studio项目有一个app.config文件,该文件被复制到MyProj.dll旁边的MyProj.dll.config。

计划是在部署.dll之后编辑MyProj.dll.config。 我试图从修改后的本地文件中读取我的设置。 我试图拉出LocalFilesSettingsObject并将其应用程序名称更改为我的.dll,如下所示:

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(); 

那不行。 我正在努力绕过整个.NET设置混乱。 我想要一个配方来完成这个任务。 我还想要一个关于如何在.NET 2.0中使用设置的清晰解释(带有示例)的链接

您需要自己加载x.dll.config (使用Configuration API)。 所有自动文件处理(包括.Settings )都与machine.config / y.exe.config / user-settings有关。

要打开命名的配置文件:

  • 参考System.Configuration.dll程序集。
  • 使用System.Configuration
  • 创建代码如:

     Configuration GetDllConfiguration(Assembly targetAsm) { var configFile = targetAsm.Location + ".config"; var map = new ExeConfigurationFileMap { ExeConfigFilename = configFile }; return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); } 

1-在visual studio中打开app.config文件

2-“在”配置“标签中添加您的配置标签”appSettings“如下:

       

3-代码c#

 var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location); string userName = appConfig.AppSettings.Settings["UserName"].Value; string password = appConfig.AppSettings.Settings["Password"].Value; 

并且不要忘记为“ConfigurationManager”和“Assembly”添加这两个使用

  • 使用System.Configuration;
  • 使用System.Reflection;

如果未显示System.Configuration,则必须在“引用”中添加引用“System.Configuration”

4-您可以更新dll的配置:

  • 打开文件“ MyProj.dll.config
  • 然后更新您的配置