Чтение из файла app.config
Я пытаюсь прочитать StartMonthColumn и CategoryHeadingColumn
из приведенного ниже файла app.config с помощью кода
ConfigurationSettings.AppSettings["StartingMonthColumn"]
но он возвращает null, также ConfigurationSettings.AppSettings.Count возвращает ноль
Пожалуйста, помогите мне прочитать это в приложении для Windows
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="CTARepository.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<CTARepository.Properties.Settings>
<setting name="Setting" serializeAs="String">
<value />
</setting>
</CTARepository.Properties.Settings>
</userSettings>
<appSettings>
<add key="StartingMonthColumn" value="7"/>
<add key="CategoryHeadingColumn" value="1"/>
</appSettings>
</configuration>
Ответы
Ответ 1
ConfigurationSettings.AppSettings устарел, вы должны использовать ConfigurationManager.AppSettings вместо этого (вам нужно будет добавить ссылку на System.Configuration)
int value = Int32.Parse(ConfigurationManager.AppSettings["StartingMonthColumn"]);
Если у вас все еще есть проблемы с чтением в настройках вашего приложения, проверьте, правильно ли указан ваш файл app.config
. В частности, он должен быть назван в соответствии с исполняющей сборкой, т.е. MyApp.exe.config
, и должен находиться в том же каталоге, что и MyApp.exe
.
Ответ 2
ConfigurationSettings.AppSettings устарел, см. здесь:
http://msdn.microsoft.com/en-us/library/system.configuration.configurationsettings.appsettings.aspx
Тем не менее, он все равно должен работать.
Просто предложение, но подтвердили ли вы, что ваша конфигурация приложения является той, которую использует ваш исполняемый файл?
Попробуйте установить отладчик и проверите следующее значение:
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
И затем открытие файла конфигурации и проверка раздела там, как вы ожидали.
Ответ 3
Try:
string value = ConfigurationManager.AppSettings[key];
Подробнее:
Чтение ключей из App.Config
Ответ 4
Для справки в будущем вам просто нужно добавить System.Configuration
в свою библиотеку ссылок:
![введите описание изображения здесь]()
Ответ 5
Это:
Console.WriteLine( "StartingMonthColumn is {0}", ConfigurationManager.AppSettings["StartingMonthColumn"]);
отлично работает для меня.
Обратите внимание, что ConfigurationManager
находится в пространстве имен System.Configuration
(так что вам, скорее всего, понадобится инструкция using System.Configuration;
), и что, поскольку то, что вы читаете, имеет тип строки, вам нужно проанализировать то, что вы читаете в использовать его как число.
Кроме того, убедитесь, что вы установили system.configuration.dll
в качестве ссылки в своем проекте или создали script.
Ответ 6
Причина проста, ваш вызов ConfigurationSettings.AppSettings
не возвращает требуемый файл конфигурации. Попробуйте использовать один из следующих способов:
- Убедитесь, что ваш конфигуратор приложения имеет то же имя, что и ваш exe файл приложения - с добавлением расширения .config, например MyApp.exe.config
- ИЛИ вы можете использовать
ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location).AppSettings["StartingMonthColumn"]
Надеюсь, что это поможет
Ответ 7
Попробуйте перестроить свой проект. Он копирует содержимое App.config
в
"< YourProjectName.exe > .config" в библиотеке сборки.
Ответ 8
Также добавьте ключ "StartingMonthColumn" в App.config, из которого вы запускаете приложение, например, в App.config тестового проекта.