0

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

我希望能够只共享 app.config 文件的 1 个副本,这样我就可以在 1 个地方进行更改,并让它影响应用程序的每次安装。

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

我是否遗漏了.net 内置的任何可以帮助我的东西?

如果没有,是否有任何好的第三方或开源解决方案?

4

4 回答 4

3

您可以将您的 app.config 放在共享上的某个位置并修改您的 winform 应用程序启动代码,使用 SO 此处描述的技巧: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());
            }
        }
    }
}
于 2013-02-14T10:08:52.757 回答
1

以下链接讨论了可用于同步文件和文件夹的 3rd 方工具

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

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

于 2013-02-13T20:23:30.860 回答
1

SO中描述的另一个好的解决方案是使用配置包含。 在 app.config 中使用 XML 包含或配置引用来包含其他配置文件的设置

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

<!-- externalConfig/connectionStrings.config -->
<connectionStrings>
  <add name="conn" connectionString="blahblah" />
</connectionStrings>
于 2013-02-20T09:17:12.117 回答
0

这可以使用使用 SkyDrive、Dropbox 甚至 DFS 等创建的“共享”文件夹。

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

我正在使用这种方法

  1. 要将 Web 应用程序(带有配置)部署到场,这是使用 DFS 完成的。
  2. 使用 Dropbox 部署桌面应用程序。我为此创建了特殊帐户。但是,我不确定这是否是合法使用 Dropbox :)
于 2013-02-20T09:55:04.640 回答