从插件模块读取dll.config(不App.config中!)(Reading dll.confi

2019-06-17 20:19发布

我写一个C#.NET 2.0的.dll是一个插头较大的应用程序 。 我模块Visual Studio项目具有被复制到沿MyProj.dll的侧MyProj.dll.config一个app.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到明确的解释的链接(举例)

Answer 1:

您将需要加载x.dll.config (与配置API)自己。 所有自动文件处理(包括.Settings )是所有的machine.config / y.exe.config /用户的设置。

要打开一个名为config文件:

  • 参考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); } 


Answer 2:

在Visual Studio 1-打开app.config文件

2-在“配置”标签在标签“的appSettings”添加配置波纹管:

<configuration>
    <appSettings>
        <add key="UserName" value="aaa"/>
        <add key="Password" value="111"/>
    </appSettings>
</configuration>

3-在你的代码的C#

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

不要忘了加这个2个usings为“ConfigurationManager中”和“集结号”

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

如果System.Configuration不显示,你必须添加在引用参考“System.Configuration”

4-您可以更新DLL作为波纹管的配置:

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


文章来源: Reading dll.config (not app.config!) from a plugin module