2012-04-12 36 views
6

Tôi đang đọc các bài viết, bài đăng trên diễn đàn về applicationSettings trong gần một tuần nay.Cách hợp nhất ứng dụngCài đặt của thư viện lớp vào tệp cấu hình của tệp thực thi của máy chủ

Trong hầu hết các chủ đề đã có ai đó mà dường như có một cách chính xác chỉ ra rằng các thư viện lớp không thể có tập tin cấu hình khi triển khai và applicationSettings họ cấu hình ở thiết kế phải được xác định/sáp nhập trong thực thi tập tin cấu hình .exe.config của ứng dụng lưu trữ/tiêu thụ dll.

Không nhất thiết phải đúng sự thật. Bạn có thể nhưng bạn không cần phải kết hợp chúng với cài đặt thư viện lớp trừ khi bạn muốn cung cấp cho người dùng một cách để "ghi đè" các giá trị mặc định - những giá trị được chỉ định bằng cách sử dụng mã hóa DefaultValueAttribute được mã hóa cứng trong hội đồng. Quay lại đầu trang |||||||||||||||||||||||||||||||||||||||||||||||

Vì vậy, đối với một ví dụ thực tế rất đơn giản. Hãy sử dụng VB.NET 1. Tôi đã tạo một dự án Class Library gọi là ClassLibrary. 2. Hiển thị tất cả các tệp, mở rộng MyProject, nhấp đúp vào Settings.settings. 3. Thêm một cài đặt được gọi là Tin nhắn, ứng dụng được sắp xếp có giá trị là "Hello!". 4. Tạo một tài sản trong Class1.vb (lớp tự động thêm vào)

Public Class Class1 

    Public Shared ReadOnly Property Message As String 
     Get 
      Return My.Settings.Message 
     End Get 
    End Property 

End Class 
  1. Tạo một dự án VB WinForms và gọi nó là WinForm.
  2. Thêm tham chiếu vào dự án ClassLibrary.
  3. Thêm nút vào Form1 đã tạo và nhấp đúp vào nó. 8 Thêm một số mã vào trình xử lý Button1_Click. Nên trông như thế này.

    Công Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
        MessageBox.Show(ClassLibrary.Class1.Message) 
    End Sub 
    

    End Class

  4. Có WinForm "Set as dự án Startup"

Bây giờ, trong khi ở tất cả mọi thứ IDE tác phẩm đẹp mắt. Chạy giải pháp và bạn sẽ nhận được Hello mong đợi! khi bạn nhấn nút. Nếu bạn đi và thay đổi cài đặt trong app.config của thư viện để nói "Tạm biệt!" và bạn chạy các giải pháp một lần nữa bạn sẽ có được một "Good bye!"

Tuy nhiên, nhấp chuột phải vào dự án WinForm và "Mở trong Explorer" và truy cập thư mục Gỡ lỗi. Chưa có tệp WinForm.exe.config nào. Hãy tạo một cách nhanh chóng. Chuyển về VS và trong khi dự án WinForm được chọn bấm để hiển thị tất cả các tệp. Mở rộng MyProject, mở Settings.settings, tạo một thiết lập (không quan trọng gì) và lưu lại. Ở đó chúng ta đi, một App.config đã được tạo ra và nếu tôi xây dựng giải pháp này, thư mục Debug sẽ chứa một WinForm.exe.config.

Nói cho tôi biết làm thế nào tôi kết hợp thiết từ thư viện lớp cấu hình

<configuration> 
    <configSections> 
     <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 
      <section name="ClassLibrary.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
     </sectionGroup> 
    </configSections> 

    <applicationSettings> 
     <ClassLibrary.My.MySettings> 
      <setting name="Message" serializeAs="String"> 
       <value>Hello!</value> 
      </setting> 
     </ClassLibrary.My.MySettings> 
    </applicationSettings> 
</configuration> 

tin nhắn của tôi vào của WinForm cấu hình

<configuration> 
    <configSections> 
     <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 
      <section name="WinForm.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
     </sectionGroup> 
    </configSections> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" /> 
    </startup> 
    <applicationSettings> 
     <WinForm.My.MySettings> 
      <!--<setting name="A" serializeAs="String"> 
       <value>A</value> 
      </setting>--> 
     </WinForm.My.MySettings> 
    </applicationSettings> 
</configuration> 

vì vậy tôi có thể thay đổi các thiết lập tin nhắn của giá trị trong WinForm.exe.config đến một cái gì đó khác và ứng dụng sẽ hiển thị giá trị mới này ghi đè DefaultValueAttribute.

Trả lời

3

Tôi đã thực hiện một số nghiên cứu gần đây cho vấn đề nàycài đặt ứng dụng. Tôi tìm thấy hai cách tương đối thuận tiện để làm những gì tôi đã yêu cầu. Tôi cùng suy nghĩ về nó và viết một bài blog here.

+0

Bài đăng trên blog được liên kết có hai phương pháp, thứ hai trong số đó có hiệu quả đối với tôi. Trong trường hợp liên kết bị chết, chỉ cần tìm "applicationSettings configSource" để tìm thông tin liên quan. – HotN