19

我正在编写一个 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 中工作

4

2 回答 2

27

您需要自己加载x.dll.config(使用配置 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);
    }
    
于 2009-08-01T10:53:17.837 回答
7

1- 在 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”添加这 2 个用法

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

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

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

  • 打开文件“ MyProj.dll.config
  • 然后更新您的配置
于 2016-11-15T11:29:38.003 回答