2011-12-31 36 views
10

Tôi chưa bao giờ nghĩ về nó trước đây; nhưng gần đây tôi đã học được cách tôi có thể sửa đổi tệp app.config để thêm/xóa trình theo dõi (ví dụ, để chuyển hướng tất cả các đầu ra Trace.WriteLine vào một tệp văn bản).Khi nào/Ứng dụng .NET của tôi sử dụng Tệp App.Config của nó như thế nào?

Nhưng tôi hoàn toàn không hiểu cách hoạt động? Ai đó có thể giải thích một chút?

Tôi biết mã C# tương ứng để làm giống như cấu hình (trong ví dụ này) - mã đó có được tạo/thực thi trước điểm nhập của ứng dụng của tôi không?

+1

Bạn không hiểu khía cạnh nào? Khi tệp tải? Khi người nghe theo dõi được thêm vào? Những gì chính xác? – Oded

Trả lời

8

mã đó có được tạo/thực thi trước điểm nhập của ứng dụng của tôi không?

Hãy nghĩ đến tệp cấu hình giống như tệp văn bản chuẩn. Nếu mã ứng dụng của bạn không đọc và làm bất cứ điều gì với nó, không có gì sẽ xảy ra. Vì vậy, về cơ bản khi bạn xác định một số phần trong tệp app.config, có một số mã trong ứng dụng của bạn (hoặc trong BCL hoặc tùy chỉnh) mà tại một thời điểm nào đó sẽ đọc, phân tích cú pháp và diễn giải các giá trị.

Vì vậy, hãy xem xét ví dụ về trình theo dõi. Khi bạn cố gắng để theo dõi một cái gì đó trong mã của bạn, lớp Trace cơ bản sẽ sử dụng hệ thống cấu hình để kiểm tra các giá trị bạn đã xác định trong app.config. Hệ thống cấu hình này phân tích cú pháp XML chỉ một lần và lưu trữ nó như là singleton trong bộ nhớ để tránh mọi chi phí mỗi lần. Vì vậy, nó chỉ là lần đầu tiên bạn cố gắng để theo dõi một cái gì đó mà các tập tin cấu hình được phân tích cú pháp và trên các cuộc gọi tiếp theo các giá trị được đọc trực tiếp từ bộ nhớ.

5

Ứng dụng được gửi bằng ứng dụng của bạn mỗi khi bạn khởi chạy ứng dụng.

Bạn có thể lưu trữ bất kỳ cài đặt nào trong các tệp app.config, thêm hoặc xóa động.

Ở đây bạn đi ...

<appSettings> 
    <add key="HospitalName" value="HML Hospital" /> 
    <add key="HospitalAddress" value="Madurai" /> 
    <add key="ServerName" value="SMSERVER" /> 
    <add key="DatabaseName" value="HospiCare" /> 
    <add key="DBUserID" value="sa" />  
    <add key="Theme" value ="Blue"/> 
</appSettings> 

Sau đó, bạn có thể thay đổi tương tự như sau

sử dụng namespace

using System.Configuration; 

đọc tập tin cấu hình của bạn như

string theme=ConfigurationManager.AppSettings("Theme"); 

và mod IFY bằng cách sử dụng này

Configuration configFile = ConfigurationManager.OpenExeConfiguration(System.IO.Path.GetFileName(Application.ExecutablePath)); 
configFile.AppSettings.Settings(KeyName).Value = KeyValue; 
configFile.Save(); 

Chấp nhận và bỏ phiếu lên nếu bạn thấy Anser bạn

3

Như đã khác đã giải thích. Tôi chỉ muốn giải thích một chút sâu hơn tôi hy vọng.

Trong .NET, CLR của bạn tạo ra một ranh giới ảo cho ứng dụng của bạn. Nói cách khác, khi ứng dụng của bạn được lưu trữ trong CLR, nó tạo ra thứ nguyên ảo cho ứng dụng của bạn để phát xung quanh. Nó được gọi là AppDomain hoặc miền ứng dụng. Đây là giai đoạn khi ứng dụng của bạn đọc tệp App.Config để biết bất kỳ thông tin nào. Bởi vì tại thời điểm App.Config của bạn sẽ nói cho CLR những gì kinda chạy thời gian hội đồng nó nên tìm kiếm cũ: CLR 2.0 hội đồng này thường được nhìn thấy nếu xây dựng ứng dụng của bạn trong VS2010 cho 2.0 hoặc đầu tiên tạo dự án cho 4 và sau đó thay đổi trên 2.0 mục tiêu.

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