2010-04-02 31 views
5

我需要使用ClickOnce部署來部署Windows窗體應用程序。 (VS2008,.NET 3.5) 我需要爲這個應用程序提供一個配置文件,任何用戶都可以修改。 因此,我在app.config中使用應用程序設置而不是標準appSetttings,因此我可以將用戶配置從應用程序配置中分離出來。使用應用程序設置並從app.config中讀取默認值

看到http://msdn.microsoft.com/en-us/library/ms228995(VS.80).aspx

使用VS生成與硬編碼的默認值,一類像這樣創建Settings.settings文件:

[global::System.Configuration.DefaultSettingValueAttribute("blahblah")] 
public string MyProperty 
... 

我想從app.config中讀取默認值!

所以我創建了我自己的派生自ApplicationSettingsBase的類,但我無法從app.config中讀取這些值。 任何想法?

回答

0

我實現ApplicationSettingsBase如下:

public class UserSettings : ApplicationSettingsBase 
     { 
      private static UserSettings defaultInstance = ((UserSettings)(ApplicationSettingsBase.Synchronized(new UserSettings()))); 

      public static UserSettings Default 
      { 
       get 
       { 
        return defaultInstance; 
       } 
      } 

      [UserScopedSetting()] 
      public string MyProperty 
      { 
       get { return (string)this["MyProperty"]; } 
       set { this["MyProperty"] = (string)value; } 
      } 
      //add more properties 
} 

而且在app.config中添加正確的XML ...

看到http://msdn.microsoft.com/en-us/library/8eyb2ct1(VS.80).aspx

和它的作品。 HTH!

警告! ApplicationSettingsBase 出現在實現中使用一些延遲加載。在訪問至少一個屬性之前,ApplicationSettingsBase.PropertiesApplicationSettingsBase.PropertyValues集合保持爲空。

UserSettings settings = new UserSettings(); 
string temp = settings.MyProperty;//without this line, settings.PropertyValues is empty!! 
SettingsPropertyValueCollection properties = settings.PropertyValues; 
1

我寫了我自己的配置類來保留設置。另一個可能對您有所幫助的事情是,如果您希望在更新ClickOnce應用程序時保留設置,我建議您將它放在ClickOnce緩存以外的其他位置。這也將使您的用戶更容易找到它。本文推薦使用LocalApplicationData(因爲您可以使用Vista或Win7編寫),但您可能希望將它放在MyDocuments下,因爲您希望用戶能夠對其進行編輯。

http://robindotnet.wordpress.com/2009/08/19/where-do-i-put-my-data-to-keep-it-safe-from-clickonce-updates/

RobinDotNet

相關問題