使用共享配置文件的任何组件?

时间:2013-02-11 19:27:14

标签: c# app-config

我有一个场景,在多台Citrix服务器上安装了1个Winform应用程序。应用程序应该在每台服务器上具有完全相同的配置(我们有多个服务器用于扩展)。

我希望能够只共享app.config文件的一个副本,这样我就可以在一个位置进行更改,并使每个应用程序的安装都有效。

就我所知,.net的唯一内置支持是使用configSource属性,但这仅适用于各个配置节。我想分享整个配置文件(或至少是配置组)。

我是否遗漏了.net内置的任何内容对我有帮助?

如果没有,那里有没有好的第三方或开源解决方案?

4 个答案:

答案 0 :(得分:3)

您可以将app.config放在共享上的某个位置并使用SO中描述的技巧修改您的winform应用程序启动代码:Change default app.config at runtime,如下所示:

namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            using (AppConfig.Change(@"\\myserver\mypath\app.config"))
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
        }
    }
}

答案 1 :(得分:1)

以下链接介绍了可用于同步文件和文件夹的第三方工具

http://raywoodcockslatest.blogspot.com/2011/01/windows-7-raid-or-mirror-across.html

另外,您是否尝试过编写自己的复制器服务?根据您的时间和预算,您可以决定建立或购买。我也许会建立它。

答案 2 :(得分:1)

SO中描述的另一个好的解决方案是使用config includes。 Use XML includes or config references in app.config to include other config files' settings

<!-- SomeProgram.exe.config -->
<configuration>
  <connectionStrings configSource="externalConfig/connectionStrings.config"/>
</configuration>

<!-- externalConfig/connectionStrings.config -->
<connectionStrings>
  <add name="conn" connectionString="blahblah" />
</connectionStrings>

答案 3 :(得分:0)

可以使用像SkyDrive,Dropbox甚至DFS这样的“共享”文件夹。

在每台服务器上,您将拥有相同的配置文件副本。作为一个好处,您甚至可以使用这种方法来处理二进制文件(当然,您应该处理文件锁)。

我正在使用这种方法

  1. 将Web应用程序(带配置)部署到服务器场,这是通过DFS完成的。
  2. 使用Dropbox部署桌面应用。我为此创建了特别帐户。但是,我不确定这是否合法使用Dropbox:)