2010-04-02 42 views
5

Tôi cần triển khai ứng dụng Windows Forms bằng cách sử dụng triển khai ClickOnce. (VS2008, .NET 3.5) Và tôi cần cung cấp tệp cấu hình cho ứng dụng này mà bất kỳ người dùng nào cũng có thể sửa đổi. Vì lý do này, tôi đang sử dụng Cài đặt ứng dụng thay vì appSetttings chuẩn trong app.config để tôi có thể tách cấu hình người dùng khỏi cấu hình ứng dụng.Sử dụng Cài đặt Ứng dụng và cài đặt mặc định từ app.config

thấy http://msdn.microsoft.com/en-us/library/ms228995(VS.80).aspx

Tạo một file Settings.settings sử dụng VS tạo ra một lớp học với giá trị mặc định mã hóa cứng như thế này:

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

Tôi muốn đọc các giá trị mặc định từ app.config!

Vì vậy, tôi đã tạo lớp của riêng mình bắt nguồn từ ApplicationSettingsBase nhưng tôi không thể nhận được điều này để đọc các giá trị từ app.config. Bất kỳ ý tưởng nào?

Trả lời

0

tôi thực hiện ApplicationSettingsBase như sau:

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 
} 

Và thêm xml đúng trong app.config ...

thấy http://msdn.microsoft.com/en-us/library/8eyb2ct1(VS.80).aspx

và nó hoạt động. HTH!

Một lời cảnh báo !! ApplicationSettingsBase xuất hiện để sử dụng một số tải chậm trong quá trình triển khai. Các bộ sưu tập ApplicationSettingsBase.PropertiesApplicationSettingsBase.PropertyValues vẫn trống cho đến khi có ít nhất một thuộc tính được truy cập.

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

Tôi đã viết lớp cấu hình của riêng mình để giữ lại cài đặt. Một điều có thể hữu ích cho bạn là nếu bạn muốn các thiết lập được giữ lại khi ứng dụng ClickOnce được cập nhật, tôi khuyên bạn nên đặt nó ở đâu đó khác với bộ nhớ cache ClickOnce. Điều này cũng sẽ giúp người dùng tìm thấy nó dễ dàng hơn. Bài viết này đề xuất LocalApplicationData (vì bạn có thể viết nó với Vista hoặc Win7), nhưng bạn thậm chí có thể muốn đặt nó dưới MyDocuments vì bạn muốn người dùng có thể chỉnh sửa nó.

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

RobinDotNet

Các vấn đề liên quan