使用user.config而不是app.config

时间:2011-03-08 13:03:43

标签: c# .net app-config unity-container

有人可以给我一个关于如何使用用户设置而不是应用程序设置的简单示例吗?我需要具有特定于用户的Microsoft Unity部分,但在应用程序启动时不会为用户创建配置。另外,我无法使用Visual Studio gui来创建这些设置。我还需要在运行时修改一些映射。

这就是我在User-Config中所需要的(应该放在用户的appdata中)

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <section name="MyUnityContainer" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
      </configSections>
      <connectionStrings>
        <add name="MyProgram.Properties.Settings.MyConnectionString" connectionString="aConnectionString" />
      </connectionStrings>
      <MyUnityContainer>
        <typeAliases>
          <!-- type aliases -->
        </typeAliases>
        <containers>
          <container>
            <types>
              <!-- types -->
            </types>
            <extensions>
              <add type="Microsoft.Practices.Unity.InterceptionExtension.Interception, Microsoft.Practices.Unity.Interception" />
            </extensions>
            <extensionConfig>
              <add name="interception" type="Microsoft.Practices.Unity.InterceptionExtension.Configuration.InterceptionConfigurationElement, Microsoft.Practices.Unity.Interception.Configuration"></add>
            </extensionConfig>
          </container>
        </containers>
      </MyUnityContainer>
   </configuration>

我需要在应用程序启动时加载它,但不会创建用户的配置文件!如果程序不存在,如何让我的程序在启动期间自动创建用户特定的配置?

3 个答案:

答案 0 :(得分:2)

App.config存储在应用程序根目录中,而user.config存储在用户配置文件中。 User.config覆盖App.config设置

答案 1 :(得分:0)

我认为user.config覆盖仅适用于appSetting配置部分。

所以你会:

<appSettings file="user.config">

答案 2 :(得分:0)

我通过将整个配置复制到app数据并通过路径映射从那里加载来解决这个问题。这很有效。

ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
configFile.ExeConfigFilename = exeFilePath; //somewhere in appdata in my case
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configFile,ConfigurationUserLevel.None);