2009-02-26 27 views

Trả lời

28

Yes, you do:

.Net framework sẽ đọc app.config một lần, và không bao giờ chạm vào app.config một lần nữa. Đó là lý do tại sao bạn phải khởi động lại ứng dụng để nhận thay đổi.

Tại sao không .Net framework phát hiện app.config đã thay đổi và làm mới tất cả dữ liệu cấu hình?

Lý do rất đơn giản, điều này là không thể nói chung.

Hãy sử dụng Raymond của “tưởng tượng này có thể được thực hiện” logic ở đây ...

4

Yes.

Có lẽ bạn có nghĩa là tệp appname.exe.config?

8

Không, bạn không . Nhưng nếu bạn muốn thay đổi trong app.config để có hiệu lực, bạn có thể cần phải khởi động lại nó. Hoặc bạn có thể muốn triển khai cơ chế trình theo dõi tệp cấu hình tùy chỉnh sẽ thay đổi cài đặt của dịch vụ khi đang di chuyển.

+7

"nếu bạn muốn thay đổi trong app.config để có hiệu lực," - Tôi nghĩ rằng đó là tiềm ẩn trong câu hỏi! –

+0

Tuyệt vời, chỉ khi tôi ra khỏi gà cao su. –

+0

@Gamecat: phạm vi miễn phí? –

1

Cách này vượt quá phạm vi của câu hỏi, nhưng tôi đoán bạn chỉ muốn thực hiện thay đổi trong một số phần "ứng dụng cụ thể" (appSettings, v.v.).

Bạn nên viết trình xử lý phần cấu hình của riêng mình, trình theo dõi đó là tệp cấu hình riêng của nó - cách tiếp cận nlog uses. Kiểm tra phần "Tự động định cấu hình lại".

2

Thông thường có. Tuy nhiên bạn có thể viết một dịch vụ cửa sổ sẽ đặt một tệp theo dõi trên tệp cấu hình và cảm nhận một sửa đổi và áp dụng nó mà không cần phải khởi động lại.

Ví dụ khung đăng nhập Log4Net cung cấp cơ chế như vậy cho tệp cấu hình của nó.

7

Tôi đã sử dụng tính năng này trước đây. Về cơ bản, điều này sẽ tải lại phần được chỉ định trước khi truy lục giá trị. Khá ít hiệu quả hơn một trình xem tập tin cấu hình làm mới theo yêu cầu, nhưng chắc chắn hiệu quả được sử dụng một cách cẩn thận.

ConfigurationManager.RefreshSection("appSettings") 
    sValue = ConfigurationManager.AppSettings(name) 
+0

Đó là một tìm kiếm tuyệt vời! – d219

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