2009-05-26 35 views
67

Tôi thực sự đang trong giai đoạn học tập của các công cụ liên quan .NET và tôi đã khám phá cách lưu ứng dụng. Tôi đã kết thúc bằng cách viết lớp của riêng tôi để lưu các thiết lập trong một tệp XML và sau đó tôi thấy rằng bản thân .NET hỗ trợ lưu các thiết lập ứng dụng.Sự khác biệt giữa tệp app.config và tệp XYZ.settings là gì?

Nhưng tôi đã tìm thấy 2 cách để thực hiện điều đó. Khi tôi mở hộp thoại thêm mục mới trong Visual Studio 2008, nó cung cấp tùy chọn để tạo tệp Cài đặt (.settings) hoặc tệp cấu hình (.config). Whats sự khác biệt giữa cả hai và trong những kịch bản họ nên được sử dụng?

Trả lời

51

Cài đặt (Cả hai từ tập hợp .settings và Configuration.AppSettings), được lưu trữ trong tệp .config [cùng với nhiều nội dung khác].

Sự khác biệt là các công cụ .settings [được thêm vào trong .NET 2.0/VS2005] lớp một lớp được đánh máy mạnh trên đầu bộ cài đặt thuộc về nhau trong khi Configuration.AppSettings chỉ cho phép bạn truy xuất chuỗi, buộc bạn phải làm bất kỳ chuyển đổi nào và không có khái niệm về giá trị mặc định. (lớp cấu hình đã thực sự được shunted vào một bên lắp ráp để phản ánh điều này - bạn cần phải thêm một tham chiếu đến System.Configuration rõ ràng nếu bạn muốn nó).

Thêm một .settings vào dự án của bạn sẽ dẫn đến app.config được thêm vào nhà các cài đặt nếu bạn chưa có. Lớp học đọc cài đặt được tạo tự động mỗi lần bạn thay đổi danh sách cài đặt cho thành phần/ứng dụng của bạn.

Các tính năng khác của .Settings là khả năng chỉ định một số cài đặt như người dùng cụ thể (và cũng để lưu cài đặt người dùng cụ thể chỉ với một cuộc gọi). Cài đặt nói chung là bạn có khả năng xác định rõ ai đang sử dụng thiết lập nào trong một cơ sở mã bằng cách sử dụng các đặc tính của các thuộc tính (và mỗi bộ là một khối riêng biệt trong tệp XML). . Configuration.appSettings là toàn cầu hơn trong tự nhiên của nó - nó chỉ là một túi tài sản và bạn không biết được DLL, hệ thống con hoặc lớp phụ thuộc vào một mục nhập thiết lập cụ thể. Xem this blog post from Steven Smith để biết thêm.

Cuối cùng, nếu bạn vẫn chưa đọc đủ về quản lý cài đặt, bạn sẽ không đánh bại this Rick Strahl post on the subject để hoàn thành hoặc số lượng tuyệt đối của các ý tưởng và góc độ.

HƯỚNG DẪN: Ngoài ra còn có các công cụ ASP.NET vNext Configuration, outlined in this article khá linh hoạt và cung cấp góc khác về quản lý cài đặt cấu hình.

+0

Cảm ơn câu trả lời. Chỉ cần nhầm lẫn về một điểm: Có 2 loại cài đặt.Một là cài đặt ứng dụng và khác là cài đặt người dùng. Nếu cả hai loại cài đặt đều được lưu trữ trong tệp cấu hình, cài đặt người dùng sẽ khác nhau như thế nào đối với những người dùng khác nhau? – Hemant

+2

Xin lỗi vì đã bỏ qua đề cập đến điều đó. Cài đặt người dùng là một trong những lý do tại sao mặc định tồn tại (nếu người dùng chưa sử dụng ứng dụng, mặc định sẽ áp dụng cho đến khi thay đổi được lưu). Cài đặt người dùng được lưu trữ trong tệp cấu hình riêng trong thư mục hồ sơ của người dùng (Users \ XXX). Các cài đặt người dùng cũng có thể được cập nhật (các hệ thống không thể sử dụng API mặc định và không được - chúng nằm trong Tệp Chương trình và không thể kiểm soát an toàn nhiều quyền truy cập của người dùng ở đó.) –

+0

Trình quản lý cấu hình phù hợp với tất cả điều này ở đâu? Im cố gắng và thất bại để có được điều đó để cho tôi biết nơi settings.Settings của tôi sống và sau đó lưu một cấu hình trống có –

3

Tệp cài đặt là tệp tài nguyên mà bạn chỉ định các cài đặt khác nhau và giá trị mặc định của chúng.

Các giá trị được định cấu hình trong tệp cấu hình ứng dụng (tệp .config).

Tệp cài đặt không bao giờ được triển khai, vì vậy bạn sẽ cần tệp cấu hình để thực hiện cấu hình.

+0

Khi tôi đang ở chế độ cầu kỳ (chỉ cập nhật bài đăng của riêng tôi - rất nhiều thư bị thiếu trong đó) Trong khi tệp .settings là tệp XML, tôi chắc chắn rằng nó không được coi là tài nguyên, phải không? Ngoài ra, giá trị người dùng cụ thể được lưu trữ trong một khu vực riêng biệt, bên ngoài tệp .config. Tệp .config cần được triển khai nếu bạn có cài đặt không mặc định (thuộc tính trong lớp cài đặt đã tạo quản lý giá trị mặc định của các giá trị nếu không có gì được chỉ định trong tệp cấu hình.) –

+0

Trong khi tệp xml Settings.settings isn ' t triển khai, các tập tin Settings.Designer.cs được biên dịch vào ứng dụng, phải không? –

0

Tệp app.config được lưu trữ trong cùng thư mục với ứng dụng. Người dùng thông thường sẽ không có quyền ghi (ví dụ: trong "Tệp chương trình").

Tệp cài đặt phải được lưu trữ trong thư mục "AppData" của người dùng (nơi anh có quyền truy cập).

Vì vậy, hãy sử dụng tệp cài đặt cho các tùy chọn có thể định cấu hình người dùng.

+0

Không hoàn toàn đúng, theo các câu trả lời khác: https://stackoverflow.com/a/909712/199364, https://stackoverflow.com/a/13072966/199364 '.settings' (và hỗ trợ' Cài đặt 'của Visual Studio) có thể được sử dụng cho cả cấu hình ứng dụng một lần và cấu hình cho mỗi người dùng. '.settings' không tồn tại trong thời gian chạy; những gì tồn tại trong thời gian chạy là 'app.config' trong thư mục ứng dụng và [user]' .config' trong thư mục dữ liệu của người dùng. – ToolmakerSteve

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