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

时间:2009-07-30 19:28:34

标签: c# .net-2.0 settings appsettings

我正在编写一个C#.NET 2.0 .dll,它是Larger application的插件。我的模块的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中使用设置的清晰解释(带有示例)的链接

2 个答案:

答案 0 :(得分:25)

您需要自己加载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 :(得分:5)

在Visual Studio中打开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;

并且不要忘记为“ConfigurationManager”和“Assembly”

添加这两个用法
  • 使用System.Configuration;
  • 使用System.Reflection;

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

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

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