2013-02-11 58 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 :)