2010-06-08 5 views
7

Я пытаюсь использовать файл конфигурации в моем приложении консоли C#. Я создал файл внутри проекта, перейдя в New -> Application Configuration File и назвав его myProjectName.config. Мой конфигурационный файл выглядит следующим образом:Как использовать конфигурационный файл приложения в C#?

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

код для доступа выглядит следующим образом:

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

Может кто-нибудь одолжить намек на то, почему это не работает? (Я получаю сообщение об ошибке.)

Спасибо!

badPanda

+0

Какое сообщение об ошибке? –

+0

Извините за эту двусмысленность всем. Когда я упомянул об ошибке, я имел в виду оператор console.writeline, в котором говорилось, что «файл конфигурации не читается» Прошу прощения за путаницу. – badpanda

ответ

8

Вы не можете изменить название от app.config и ожидать ConfigurationManager найти его без предоставления ему больше информации. Измените имя myProjectName.config на app.config, перестройте, и вы увидите файл в папке bin с именем myProjectName.exe.config. Тогда ваш звонок на ConfigurationManager.AppSettings должен работать правильно.

2

Во-первых, используйте ConfigurationManager вместо ConfigurationSettings.

Во-вторых, вместо того, чтобы говорить «не работает», что не дает никакой полезной информации, расскажите нам, что вы видите. Скомпилирует ли он? Вызывает ли это исключение во время выполнения? Ваш компьютер начинает курить и пахнуть, как плавильный пластик?

Попробуйте это:

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

На самом деле я сказал, что это сообщение об ошибке выводилось в выражении if, но спасибо за ваш ответ. – badpanda