我有一个场景,在多台Citrix服务器上安装了1个Winform应用程序。应用程序应该在每台服务器上具有完全相同的配置(我们有多个服务器用于扩展)。
我希望能够只共享app.config文件的一个副本,这样我就可以在一个位置进行更改,并使每个应用程序的安装都有效。
就我所知,.net的唯一内置支持是使用configSource属性,但这仅适用于各个配置节。我想分享整个配置文件(或至少是配置组)。
我是否遗漏了.net内置的任何内容对我有帮助?
如果没有,那里有没有好的第三方或开源解决方案?
答案 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这样的“共享”文件夹。
在每台服务器上,您将拥有相同的配置文件副本。作为一个好处,您甚至可以使用这种方法来处理二进制文件(当然,您应该处理文件锁)。
我正在使用这种方法