Что такое App.config в С#.NET? Как это использовать?

Я сделал проект в С#.NET, где мой файл базы данных - это книга Excel. Так как местоположение строки подключения жестко закодировано в моем кодировании, нет никакой проблемы для ее установки в моей системе, но для других систем есть.

Есть ли способ предложить пользователю установить путь один раз после завершения установки приложения?

Ответы, которые я получил, это "Use App.Config"... может ли кто-нибудь сказать, что это за App.config и как его использовать в моем контексте здесь?

Ответ 1

В своем простейшем случае app.config представляет собой XML файл с множеством предопределенных разделов конфигурации и поддерживает настраиваемые разделы конфигурации. Раздел "Конфигурация" представляет собой фрагмент XML со схемой, предназначенной для хранения некоторого типа информации.

Настройки можно настроить с помощью встроенных конфигурационных разделов, таких как connectionStrings или appSettings. Вы можете добавить свои собственные разделы конфигурации; это расширенная тема, но очень мощная для создания файлов с типизированной типизацией.

Веб-приложения обычно имеют файл web.config, в то время как графические пользовательские приложения Windows имеют файл app.config.

Конфигурационные файлы на уровне приложения наследуют настройки из глобальных файлов конфигурации, например. machine.config.

Чтение из App.Config

Строки подключения имеют предопределенную схему, которую вы можете использовать. Обратите внимание, что этот небольшой фрагмент фактически является допустимым файлом app.config(или web.config):

<?xml version="1.0"?>
<configuration>
    <connectionStrings>   
        <add name="MyKey" 
             connectionString="Data Source=localhost;Initial Catalog=ABC;"
             providerName="System.Data.SqlClient"/>
    </connectionStrings>
</configuration>

После того, как вы определили свой app.config, вы можете прочитать его в коде, используя класс ConfigurationManager. Не пугайтесь подробных примеров MSDN; это на самом деле довольно просто.

string connectionString = ConfigurationManager.ConnectionStrings["MyKey"].ConnectionString;

Запись в App.Config

Частое изменение файлов *.config обычно не является хорошей идеей, но похоже, что вы хотите только выполнить одноразовую настройку.

Смотрите: Измените строку подключения и перезагрузите app.config во время выполнения, в котором описывается, как обновить раздел connectionStrings файла *.config во время выполнения.

Обратите внимание, что в идеале вы должны выполнить такие изменения конфигурации от простого установщика.

Расположение App.Config во время выполнения

Q. Предположим, что я вручную изменяю некоторые <value> в app.config, сохраняю его и закрываю. Теперь, когда я перехожу в папку bin и запускаю файл .exe отсюда, почему он не отражает внесенные изменения?

A. При компиляции приложения его файл app.config копируется в каталог bin 1 с именем, соответствующим вашему exe. Например, если ваш exe был назван "test.exe", в каталоге bin должен быть "text.exe.config". Вы можете изменить конфигурацию без перекомпиляции, но вам нужно будет отредактировать файл конфигурации, который был создан во время компиляции, а не оригинальный файл app.config.

1: Обратите внимание, что файлы web.config не перемещаются, а остаются в том же месте во время компиляции и развертывания. Единственное исключение - когда web.config преобразован.

.NET Core

В .NET Framework были введены новые параметры конфигурации. Способ работы файлов *.config, похоже, не изменился, но разработчики могут выбирать новые, более гибкие парадигмы конфигурации.

Ответ 2

Проще говоря, App.config - это XML файла на основе XML, который содержит конфигурации уровня приложения.

Пример:

<?xml version="1.0"?>
<configuration>
  <appSettings>
    <add key="key" value="test" />
  </appSettings>
</configuration>

Вы можете получить доступ к конфигурациям с помощью ConfigurationManager как показано в фрагменте кода ниже:

var value = System.Configuration.ConfigurationManager.AppSettings["key"];
// value is now "test"

Примечание. ConfigurationSettings - это устаревший метод для получения информации о конфигурации.

var value = System.Configuration.ConfigurationSettings.AppSettings["key"];

Ответ 3

App.Config - это файл XML, который используется в качестве файла конфигурации для вашего приложения. Другими словами, вы храните в нем любые настройки, которые вы можете изменить без необходимости изменения кода (и перекомпиляции). Он часто используется для хранения строк подключения.

Посмотрите эту статью MSDN о том, как это сделать.

Ответ 4

Просто чтобы добавить что-то, чего мне не хватало во всех ответах - даже если это кажется глупым и очевидным, как только вы узнаете:

Файл должен называться "App.config" или "app.config" и может находиться в вашем проекте на том же уровне, что и, например, Program.cs.

Я не знаю, возможны ли другие местоположения, другие имена (например, application.conf, как предложено в документации ODP.net) не помогли мне.

PS. Я начал с Visual Studio Code и создал новый проект с "dotnet new". В этом случае файл конфигурации не создается, я уверен, что есть другие случаи. PPS. Вам может потребоваться добавить пакет nuget, чтобы иметь возможность прочитать файл конфигурации, в случае .NET CORE это будет "пакет добавления dotnet System.Configuration.ConfigurationManager --version 4.5.0"

Ответ 5

Вы можете получить доступ к ключам в App.Config, используя:

ConfigurationSettings.AppSettings["KeyName"]

Возьмите alook в этой теме