2016-11-24 74 views
1

在這裏,我們有一個由各種用戶使用的winforms桌面應用程序。每個用戶在本地運行應用程序。也就是說,構建文件夾對每個用戶都是分開的。他們在本地應用程序配置文件下還有不同的配置密鑰集來運行應用程序(不同的連接字符串和密鑰選項)。你可能會猜測更新版本有多痛苦。單獨用戶的單獨配置文件

我的目的是將這個winforms桌面應用程序放在一個共享文件夾中並將其共享給每個用戶。這裏的挑戰是他們的配置是分開的。

我嘗試合併不同名稱的單獨鍵和使用代碼下的條件,但工作似乎很大。

有什麼辦法可以收集bin文件夾下的所有這些單獨的配置文件,並根據用戶名在它們之間切換?接近這個問題最簡單的方法是什麼?

謝謝。

+0

應用程序是否使用數據庫連接?最好在中央數據庫表中配置所有用戶特定的值,並在應用程序初始化時映射它們。 –

+0

我建議使用便攜式SQLite數據庫,以便爲每個用戶存儲設置。注意:應用程序需要訪問權限才能讀取寫入SQLite數據庫 – GauravKP

+0

@SouvikGhosh感謝您的建議。由於每臺計算機的連接驅動程序不同,即使DB密鑰也有不同的值,所以它可能不是最好的方法。 –

回答

0

我的建議是使用修改的.NET設置機制。一般來說,您可以具有特定於應用程序和用戶的特定設置在這種情況下,我們想使用用戶設置。

這種方法的問題是,用戶設置不存儲在bin文件夾,但其他地方也就是%USERPROFILE%\應用程序數據\本地...here是詳細信息)。但是,您可以通過編寫自定義設置提供程序來覆蓋此行爲。幸運的是有人已經做到了。從這answerCustomSettingsProvider作品像一個魅力。

總之這裏是一個解決方案:

  • 爲了添加一個設置文件到您的項目右擊 項目,然後選擇添加 - >新項... Finnally,發現 設置文件模板。如果雙擊添加的文件,設計師將彈出。我們假設這個文件叫做MySettings
  • 定義一些用戶特定設置。

  • CustomSettingsProvider添加到您的項目中。

  • 查找項目MySettings類和以下屬性添加到它:

[System.Configuration.SettingsProvider(typeof(CustomSettingsProvider))]

  • 在使用設置之前,您必須指定文件的路徑。我建議把它作爲你應用程序中的第一件事。在下面的例子中設置文件在當前文件夾中創建,他們的名字將包含用戶名:

MySettings.Default.SettingsKey = [email protected]".\user_{Environment.UserName}.config";

  • 如果有設置的文件不存在CustomSettingsProvider將創建一個空的。
  • 當關閉應用程序調用MySettings.Default.Save();將用戶設置保存到文件。
  • 只需運行一次自己的應用程序即可創建模板文件。然後爲其他用戶相應地更改其名稱的副本。
  • 我的方法的缺點是在設置文件中沒有連接字符串部分。所以參考ConfigurationManager.ConnectionStrings,您將不得不用MySettings.PropertyWithConnectionString的引用來替換。
+0

謝謝您的詳細建議。我會嘗試這種方法。我會通知你並且決定相應地標記你的答案。 –

+0

我採用了不同的方法。我沒有經過這些步驟。我會接受你的努力的答案。謝謝。 –