2009-02-03 45 views
91

Tôi biết tôi có thể mở các tệp cấu hình có liên quan đến một assembly với phương thức tĩnh ConfigurationManager.OpenExe(exePath) nhưng tôi chỉ muốn mở một cấu hình không liên quan đến một assembly. Chỉ là một tệp cấu hình .NET chuẩn.Tải các tệp cấu hình tùy chỉnh

Trả lời

204

các bài viết đăng bởi Ricky đang rất tốt, nhưng tiếc là họ không trả lời câu hỏi của bạn.

Để giải quyết vấn đề của bạn, bạn nên thử đoạn mã này:

ExeConfigurationFileMap configMap = new ExeConfigurationFileMap(); 
configMap.ExeConfigFilename = @"d:\test\justAConfigFile.config.whateverYouLikeExtension"; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None); 
+0

@Oliver Bởi 'whatYouLikeExtension', bạn có nghĩa là bạn * phải * có * cái gì đó * sau' config.' không? – Svish

+1

@Svish: Tôi không thể nhớ. Bạn đã thử chưa – Oliver

+3

@Oliver Có xung quanh để thử ngay bây giờ, và có vẻ hoạt động tốt mà không có :) – Svish

6

Các tập tin cấu hình chỉ là một tập tin XML, bạn có thể mở nó bằng cách:

private static XmlDocument loadConfigDocument() 
{ 
    XmlDocument doc = null; 
    try 
    { 
     doc = new XmlDocument(); 
     doc.Load(getConfigFilePath()); 
     return doc; 
    } 
    catch (System.IO.FileNotFoundException e) 
    { 
     throw new Exception("No configuration file found.", e); 
    } 
    catch (Exception ex) 
    { 
     return null; 
    } 
} 

và sau đó lấy giá trị bằng:

// retrieve appSettings node 

    XmlNode node = doc.SelectSingleNode("//appSettings"); 
+0

đang Unreachable phát hiện sau khi 'ném ngoại lệ mới ("Không có tập tin cấu hình được tìm thấy." , e); '. – Oybek

+0

Tôi sẽ loại bỏ trả về null, nó sẽ không thực sự đạt được. –

+7

lý do sử dụng XML khi bạn có các lớp học tuyệt vời như vậy từ thư viện .Net. Tôi sẽ không đề nghị sử dụng điều này, người nghèo về thiết kế. Tiếp theo là gì? thực hiện một lớp chuỗi khác ... xem xét điều này. – Yuki

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