2010-06-08 4 views
7

Tôi đang cố gắng sử dụng tệp cấu hình trong ứng dụng giao diện điều khiển C# của mình. Tôi tạo ra các tập tin trong dự án bằng cách vào New -> Application Configuration File, và đặt tên nó là myProjectName.config. tập tin cấu hình của tôi trông như thế này:Cách sử dụng tệp cấu hình ứng dụng trong C#?

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
<appSettings> 
<add key="SSDirectory" value="D:\Documents and Settings\****\MyDocuments\****" /> 
</appSettings> 
</configuration> 

mã để truy cập vào nó trông như thế này:

private FileValidateUtil() 
    { 
     sSDirFilePath = ConfigurationSettings.AppSettings["SSDirectory"]; 
     if (sSDirFilePath == null) 
      Console.WriteLine("config file not reading in."); 
    } 

bất cứ ai có thể cho vay một gợi ý là tại sao điều này là không làm việc? (Tôi nhận được thông báo lỗi.)

Cảm ơn !!

badPanda

+0

Thông báo lỗi nào? –

+0

Xin lỗi về sự mơ hồ đó mọi người. Khi tôi đề cập đến một thông báo lỗi, tôi có nghĩa là câu lệnh console.writeline cho biết 'tập tin cấu hình không đọc trong' Tôi xin lỗi vì sự nhầm lẫn. – badpanda

Trả lời

8

Bạn không thể thay đổi tên từ app.config và mong đợi ConfigurationManager để tìm thấy nó mà không cung cấp nó thêm thông tin. Thay đổi tên của myProjectName.config trở lại app.config, xây dựng lại, và bạn sẽ thấy một tập tin trong thư mục bin được gọi là myProjectName.exe.config. Sau đó, cuộc gọi của bạn đến ConfigurationManager.AppSettings sẽ hoạt động chính xác.

2

Trước hết, sử dụng ConfigurationManager thay vì ConfigurationSettings.

Thứ hai, thay vì nói "không hoạt động", không cung cấp thông tin hữu ích, hãy cho chúng tôi biết những gì bạn đang thấy. Nó có biên dịch không? Nó có ném một ngoại lệ vào thời gian chạy không? PC của bạn có bắt đầu hút và có mùi như nhựa nóng chảy không?

Hãy thử điều này:

public string GetSSDirectory() 
    { 
     string sSDirFilePath = string.Empty; 

     if (!ConfigurationManager.AppSettings.AllKeys.Contains("SSDirectory")) 
     { 
      Console.WriteLine("AppSettings does not contain key \"SSDirectory\""); 
     } 
     else 
     { 
      sSDirFilePath = ConfigurationManager.AppSettings["SSDirectory"]; 
      Console.WriteLine("AppSettings.SSDirectory = \"" + sSDirFilePath + "\""); 
     } 

     return sSDirFilePath; 
    } 
+0

Tôi thực sự đã nói rằng nó đã ném thông báo lỗi trong câu lệnh if, nhưng cảm ơn bạn đã trả lời. – badpanda