2012-07-15 26 views
10

Tôi muốn lưu một số cài đặt trên tệp cấu hình để sử dụng trong tương lai. Tôi đang cố gắng sử dụng mã thường xuyên mà tôi nhìn thấy trên tất cả các hướng dẫn -C# - cấu hình ứng dụng không thay đổi

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
config.AppSettings.Settings["username"].Value = m_strUserName; 

// I also tried - 
//config.AppSettings.Settings.Remove("username"); 
//config.AppSettings.Settings.Add("username", m_strUserName); 

config.Save(ConfigurationSaveMode.Modified); 
ConfigurationManager.RefreshSection("appSettings"); 

Bây giờ - Tôi có thể thấy rằng trên runtime - file "... vshost.exe.config" on 'Debug' thư mục là thay đổi, hạt khi tôi đóng ứng dụng của tôi - tất cả các thay đổi sẽ bị xóa. Tôi có thể làm gì?

Trả lời

28

Để kiểm tra bằng cách sử dụng tệp cấu hình của exe bình thường, hãy bỏ chọn hộp "Bật quy trình lưu trữ Visual Studio" trong tab "Gỡ lỗi" trong trình đơn thuộc tính dự án. Điều đó sẽ khiến studio trực quan không còn sử dụng tệp vshost.exe để khởi chạy và tệp cấu hình đúng sẽ được sử dụng.

enter image description here

+0

+1 Câu trả lời hay Scott, nhưng tôi muốn tránh làm rối tung điều này vì tôi có xu hướng quên lá cờ nhỏ này và đôi khi hậu quả rất khó chịu. http://blogs.msdn.com/b/dtemp/archive/2004/08/17/215764.aspx – Steve

+0

Điều gì khác nhau giữa vshost và tệp thực? tại sao việc sử dụng cờ lại quan trọng đến vậy? – TamarG

+0

Đọc steve liên kết được cung cấp trong bình luận của mình, nó giải thích những gì quá trình vshost là cho. –

9

Khi bạn triển khai ứng dụng của mình cho người dùng cuối, không có vshost.config.
Thay đổi của bạn sẽ được áp dụng cho exe.config thực. Vì vậy, bạn không phải lo lắng về điều này.

Khi bạn xây dựng ứng dụng của mình trong phiên gỡ lỗi, tệp app.config, có trong dự án của bạn, được sao chép sang thư mục đầu ra. Sau đó, tập tin cấu hình này được sao chép vào vshost.config là tốt. Bằng cách này, nội dung của app.config sẽ ghi đè bất kỳ thay đổi nào được thực hiện trong một phiên gỡ lỗi trong vshost.exe.config.

Tuy nhiên, hãy để tôi nói rằng viết loại thông tin này vào cấu hình ứng dụng là một thực tế không tốt. Tệp cấu hình chỉ nên được sử dụng để lưu trữ cấu hình vĩnh viễn thường không thay đổi trong suốt thời gian tồn tại của ứng dụng của bạn. Ví dụ: cài đặt kết nối là thông tin hợp lệ để lưu trữ ở đó vì bạn thường không thay đổi các cài đặt này và bạn không muốn mã hóa chúng.

Các cài đặt như tên người dùng sẽ sử dụng user.config thay thế. Cấu hình này là cho mỗi người dùng/mỗi ứng dụng và cho phép truy cập đọc/ghi.

+0

nhưng tôi phải gỡ lỗi ngay bây giờ ... và tại sao vshost.config không lưu thay đổi? – TamarG

+0

@tamarg Bạn có thể kiểm tra câu trả lời của @ Steve bằng cách mở thư mục '\ bin' trong thư mục' \ Debug' của bạn và chạy thủ công tệp thực thi. Bạn phải nhớ rằng quá trình gỡ lỗi bắt đầu từ cùng một tệp tạm thời mỗi lần. –

+0

Tôi có thể đã trả lời quá nhưng tôi cung cấp +1 cho điều này! –

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