2014-07-03 18 views
11

Sau khi tạo ứng dụng Visual C# Console mới (.NET Framework 4.5), dự án đó chứa tệp App.config mặc định.Tôi làm cách nào để sử dụng một số Tệp cấu hình ứng dụng trong một dự án?

New Visual C# Console Application

Sau khi thêm một tài liệu tham khảo cho System.Configuration dự án và sử dụng nó trong một số nguồn tập tin using System.Configuration; tôi có thể sử dụng tĩnh lớp ConfigurationManager để hoạt động với file App.config. Nhưng trước đó, tôi muốn thêm một số cài đặt vào tập tin, do đó, nó bằng cách nào đó như thế này:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
    <add key="DeployWeb" value="true" /> 
    </appSettings> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
    </startup> 
</configuration> 

Bây giờ, tôi có thể viết một cái gì đó như thế này, để có được giá trị của các thiết lập:

Boolean deployWeb = false; 
Boolean.TryParse(ConfigurationManager.AppSettings["DeployWeb"], out deployWeb); 

Tuy nhiên tôi đã không thiết lập tập tin cấu hình để đọc, nhưng nó không sao, bởi vì có một mặc định. Nhưng tôi có thể thêm nhiều tệp cấu hình bằng cách nhấp chuột phải vào dự án -> Thêm -> Mục mới ... -> Tệp cấu hình ứng dụng, để tôi có, ví dụ: 5 tệp cấu hình, như trên ảnh:

Several configuration files in a project

ConfigurationManager sẽ vẫn đọc mặc định, nhưng tôi muốn điều khiển theo cách thủ công, định cấu hình tệp để sử dụng. Tôi muốn biết, nếu là có một cách thích hợp để thiết lập để tên tập tin cấu hình ConfigurationManager để sử dụng vv và nếu nó không phải là một thực hành xấu. Tôi biết cách sử dụng các cấu hình khác nhau trong chế độ gỡ lỗi/phát hành, nhưng trong trường hợp của tôi, tôi có một ứng dụng, có thể được chạy trong các chế độ khác nhau cho các mục đích khác nhau trong bản phát hành, ví dụ.

Câu hỏi: Có thể có một số tệp cấu hình trong dự án và có khả năng chuyển đổi tệp nào tôi muốn sử dụng không. Nó không phải là một thực tế xấu, tôi sẽ sử dụng một cách tiếp cận khác cho mục đích của tôi? Sử dụng các sự kiện xây dựng không phù hợp trong trường hợp của tôi (tôi nghĩ).

PS. Tôi xin lỗi vì đã kéo dài câu hỏi của tôi, tuy nhiên nó khá đơn giản và chỉ có thể được hỏi trong hai câu, nhưng như câu hỏi rules nói, câu hỏi phải chứa chi tiết.

CẬP NHẬT: Từ đã existing answer "Tùy chọn:. Bạn có thể sử dụng các lớp ConfigurationManager để tải một tập tin cấu hình thay thế bởi mã" Từ đọc msdn Tôi không nhận được phương pháp nào tôi nên sử dụng. Tôi có nên mở cấu hình Exe?

+0

http://stackoverflow.com/questions/4454016/multiple-app-config-files-in-net-class-library-project – Jonesopolis

+0

@ Jonesy Vâng, tôi đã thấy câu hỏi đó, tôi vừa cập nhật câu hỏi của mình, bạn có thể xem xét .. – prvit

+0

Tham chiếu rõ ràng đến 'System.Configuration.dll' là bắt buộc để sử dụng lớp' ConfigurationManager' vì hội đồng này không được giới thiệu bởi mặc định trong các mẫu dự án C#. – RBT

Trả lời

9

Nó có thể được thực hiện bằng tập tin cấu hình ánh xạ,

ExeConfigurationFileMap configFileMap = 
     new ExeConfigurationFileMap(); 
    configFileMap.ExeConfigFilename = "App4.config"; // full path to the config file 

    // Get the mapped configuration file 
    Configuration config = 
     ConfigurationManager.OpenMappedExeConfiguration( 
     configFileMap, ConfigurationUserLevel.None); 

    //now on use config object 

AppSettingsSection section = (AppSettingsSection)config.GetSection("appSettings"); 
+1

Để xem ví dụ đầy đủ, hãy xem http://weblogs.asp.net/kbarrows/using-multiple-config-files-in-one-application –

+0

Cảm ơn bạn đã trả lời. Nó là dễ dàng như tôi đề nghị. – prvit

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