App.config trong C # .NET là gì? Làm thế nào để sử dụng nó?


179

Tôi đã thực hiện một dự án trong C # .NET trong đó tệp cơ sở dữ liệu của tôi là một sổ làm việc Excel. Vì vị trí của chuỗi kết nối được mã hóa cứng trong mã hóa của tôi, không có vấn đề gì khi cài đặt nó trong hệ thống của tôi, nhưng đối với các hệ thống khác thì có.

Có cách nào để nhắc người dùng thiết lập đường dẫn một lần sau khi hoàn tất thiết lập ứng dụng không?

Câu trả lời tôi nhận được là "Sử dụng App.Config" ... bất cứ ai cũng có thể cho biết App.config này là gì và làm thế nào để sử dụng nó trong ngữ cảnh của tôi ở đây?


4
trùng lặp có thể có của app.config để làm gì?
người dùng

Câu trả lời:


190

Đơn giản nhất, app.config là một tệp XML có nhiều phần cấu hình được xác định trước có sẵn và hỗ trợ cho các phần cấu hình tùy chỉnh. "Phần cấu hình" là một đoạn XML với lược đồ có nghĩa là lưu trữ một số loại thông tin.

Cài đặt có thể được cấu hình bằng các phần cấu hình tích hợp như connectionStringshoặcappSettings . Bạn có thể thêm các phần cấu hình tùy chỉnh của riêng bạn; đây là một chủ đề nâng cao, nhưng rất mạnh mẽ để xây dựng các tệp cấu hình được gõ mạnh.

Các ứng dụng web thường có web.config, trong khi các ứng dụng GUI / dịch vụ của Windows có tệp app.config.

Các tệp cấu hình cấp ứng dụng kế thừa các cài đặt từ các tệp cấu hình chung, ví dụ: machine.config.

Đọc từ App.Config

Chuỗi kết nối có một lược đồ được xác định trước mà bạn có thể sử dụng. Lưu ý rằng đoạn mã nhỏ này thực sự là một tệp app.config (hoặc web.config) hợp lệ:

<?xml version="1.0"?>
<configuration>
    <connectionStrings>   
        <add name="MyKey" 
             connectionString="Data Source=localhost;Initial Catalog=ABC;"
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

Khi bạn đã xác định app.config, bạn có thể đọc mã bằng lớp Cấu hình . Đừng bị đe dọa bởi các ví dụ MSDN dài dòng; nó thực sự khá đơn giản.

string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;

Viết thư cho App.Config

Thường xuyên thay đổi các tệp * .config thường không phải là một ý tưởng hay, nhưng có vẻ như bạn chỉ muốn thực hiện thiết lập một lần.

Xem: Thay đổi chuỗi kết nối & tải lại app.config trong thời gian chạy mô tả cách cập nhật connectionStringsphần của tệp * .config khi chạy.

Lưu ý rằng lý tưởng là bạn sẽ thực hiện các thay đổi cấu hình như vậy từ một trình cài đặt đơn giản.

Vị trí của App.Config tại Runtime

H : Giả sử tôi tự thay đổi một số <value>trong app.config, lưu nó và sau đó đóng nó. Bây giờ khi tôi đi đến thư mục bin của mình và khởi chạy tệp .exe từ đây, tại sao nó không phản ánh các thay đổi được áp dụng?

A : Khi bạn biên dịch một ứng dụng, app.config của nó được sao chép vào thư mục bin 1 với tên phù hợp với exe của bạn. Ví dụ: nếu exe của bạn được đặt tên là "test.exe", thì sẽ có một "text.exe.config" trong thư mục bin của bạn. Bạn có thể thay đổi cấu hình mà không cần biên dịch lại, nhưng bạn sẽ cần chỉnh sửa tệp cấu hình đã được tạo tại thời điểm biên dịch, không phải là app.config gốc.

1: Lưu ý rằng các tệp web.config không được di chuyển mà thay vào đó giữ nguyên vị trí tại thời điểm biên dịch và triển khai. Một ngoại lệ cho điều này là khi web.config được chuyển đổi .

Lõi .NET

Các tùy chọn cấu hình mới đã được giới thiệu với .NET Core. Cách thức hoạt động của các tệp * .config dường như không thay đổi, nhưng các nhà phát triển có thể tự do chọn các mô hình cấu hình mới, linh hoạt hơn.


Xem thêm: codeproject.com/Articles/16466/ trên để có cái nhìn tổng quan tuyệt vời về cách các tệp cấu hình hoạt động
BKSpurgeon

56

Đơn giản, App.configXMLđịnh dạng tệp dựa trên Cấu hình cấp ứng dụng .

Thí dụ:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="key" value="test" />
  </appSettings>
</configuration>

Bạn có thể truy cập các cấu hình bằng cách sử dụng ConfigurationManagernhư được hiển thị trong đoạn mã dưới đây:

var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now "test"

Lưu ý: ConfigurationSettings là phương pháp lỗi thời để lấy thông tin cấu hình.

var value = System.Configuration.ConfigurationSettings.AppSettings["key"];

21
Bạn cần tham khảo System.Configuration.dllđể sử dụng các API đã đề cập ở trên.
KFL

2
Đối với một, bạn không nên lưu trữ các chuỗi kết nối trong phần Cài đặt ứng dụng, chúng sẽ nằm trong phần ConnectionStrings. Đối với hai, Visual Studio sẽ tạo các thuộc tính được gõ mạnh cho các cài đặt của bạn nếu bạn tạo chúng đúng cách thông qua trình thiết kế, bạn không bao giờ cần phải nhập tên khóa theo cách thủ công (giống như bạn đang ở trong đoạn mã trên).
BrainSlugs83

1
Chúng tôi không nói về các thực tiễn tốt nhất ở đây mà là giải pháp cho vấn đề OP.
Furqan Safdar

2
System.Configuration.ConfigurationManager.AppSettings["Key"]là một chuỗi đã có, gọi ToString()nó là dư thừa.
Bogdan Stăncescu

4

Chỉ cần thêm một cái gì đó tôi đã bỏ lỡ trong tất cả các câu trả lời - ngay cả khi nó có vẻ ngớ ngẩn và rõ ràng ngay khi bạn biết:

Tệp phải được đặt tên là "App.config" hoặc "app.config" và có thể được đặt trong dự án của bạn ở cùng cấp độ, ví dụ như Program.cs.

Tôi không biết các vị trí khác có khả thi hay không, các tên khác (như application.conf, như được đề xuất trong tài liệu ODP.net) không hoạt động với tôi.

Tái bút Tôi bắt đầu với Visual Studio Code và tạo một dự án mới với "dotnet new". Không có tập tin cấu hình được tạo ra trong trường hợp này, tôi chắc chắn có những trường hợp khác. PPS. Bạn có thể cần thêm gói nuget để có thể đọc tệp cấu hình, trong trường hợp .NET CORE, đó sẽ là "dotnet thêm gói System.Configuration.ConfigurationManager --version 4.5.0"


đây là những gì tôi đang tìm kiếm Cần biết mức độ bao gồm nó ở. Một số chương trình / khung tìm trong các thư mục như/resources
alex

3

App.Config là một tệp XML được sử dụng làm tệp cấu hình cho ứng dụng của bạn. Nói cách khác, bạn lưu trữ bên trong nó bất kỳ cài đặt nào bạn có thể muốn thay đổi mà không phải thay đổi mã (và biên dịch lại). Nó thường được sử dụng để lưu trữ các chuỗi kết nối.

Xem bài viết MSDN này về cách làm điều đó.



0

Chỉ cần thêm một điểm

Sử dụng app.config một số cách bạn có thể kiểm soát quyền truy cập ứng dụng, bạn muốn áp dụng thay đổi cụ thể cho toàn bộ ứng dụng sử dụng tệp cấu hình ứng dụng và bạn có thể truy cập các cài đặt như bên dưới Cấu hình. Cài đặt ["Khóa"]

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.