2013-02-11 27 views
0

我有一个场景,其中1个Winform应用程序安装在多个Citrix服务器上。该应用应该在每台服务器上具有完全相同的配置(我们有多台服务器用于扩展)。处理共享配置文件的任何组件?

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

就像我所知道的那样,.net的唯一内置支持是使用configSource属性,但只适用于单独的配置节。我想共享整个配置文件(或至少配置组)。

我是否缺少任何内置于.net的内容可帮助我?

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

回答

3

你可以把你的app.config地方上的共享和修改您的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()); 
      } 
     } 
    } 
} 
+0

谢谢西蒙,这很好用! +1并回答! – JMarsch 2013-02-15 16:18:25

+0

@JMarsch:一定要奖励赏金。将答案标记为已接受不会自动执行此操作。 – 2013-02-20 13:24:41

+0

@AdamRobinson谢谢!我不知道。 – JMarsch 2013-02-20 14:12:49

1

另外一个很好的解决方案,这样描述是使用配置包括。 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> 
+0

谢谢阿隆 - 我知道那件事,但问题是它只能用于部分,而且每个部分都必须有自己的文件(不能将2个部分合并成1个文件)。我真的想重定向整个配置文件。 +1虽然。 – JMarsch 2013-02-20 14:14:14

0

这是可以使用的东西,如SkyDrive中,Dropbox的,甚至DFS创建 “共享” 文件夹中。

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

我用这种方法

  1. 部署Web应用程序(与配置)的农场,这个用DFS完成。
  2. 使用Dropbox部署桌面应用程序。我为此创建了特殊帐户。不过,我不确定这是否合法使用Dropbox :)