Создание файлов поставки и обновления

Как создать файл ini

Создать файл с расширением ini не сложно. Однако для создания файла с расширением ini необходимо сначала получить права администратора.

Это можно сделать:

  • Через «Панель управления».
  • При помощи командной строки.

Как только права администратора будут получены, можно приступать к созданию файла с ini расширением.

Способы создания файла ini

Чтобы создать файл ini с использованием «Блокнота» потребуется:

  • Запустить «Блокнот».
  • Открыть готовый текстовый файл или внести информацию в новый файл и сохранить его как текстовый файл.
  • В левом верхнем углу нажимается «Файл» и из списка выбирается «Сохранить как».
  • В поле «Имя файла», после точки, в самом конце меняется расширение с «txt» на «ini».

Total Commander

Однако есть ещё один вариант. Если на ПК установлена программа «Total Commander», то файл ini можно создать и её помощью.

  • Запускается программа.
  • Затем на клавиатуре одновременно зажимаются «Shift+F4» и указывается имя файла с требуемым расширением.

Таким образом, как можно увидеть, создание файла с таким расширением как ini, процесс довольно несложный.

Как создать файл ini, итог

Если по каким-то причинам у вас не получается создать файл ini на компьютере, то сделайте то же самое на флэш-накопителе USB, который можно использовать на определенных этапах установки.

И уже после сохранения и заполнения файла, можно перенести его в папку назначения.

Необходимо убедиться, что для файла выбрана кодировка ANSI или Юникод, кодировка UTF-8 не поддерживается.

Ведь любому автору нужна обратная связь, а я прошу совсем не много за свой труд. Успехов и до новых статей!

Полезные статьи:

P.S. Прикладываю скриншот моих заработков в партнёрских программах. Более того, напоминаю, что так зарабатывать может каждый, даже новичок! Главное — правильно это делать, а значит, научиться у тех, кто уже зарабатывает, то есть, у профессионалов Интернет бизнеса.

Заберите список проверенных, особенно актуальных, Партнёрских Программ 2018 года, которые платят деньги!

Скачайте чек-лист и ценные бонусы бесплатно =>> «Лучшие партнёрки 2018 года»

Привет. Эта статья о том, как сделать сохранение для игр на Clickteam Fusion 2.5.

Для сохранения нужно использовать отдельный файл в формате .ini и расширение — объект INI он работает во всех экспортах. Метод описанный в этой статье позволит сохранять игры для всех платформ.

Для приложений Windows вам нужно будет хранить отдельный файл .ini и ссылаться на него в приложении напрямую. При чем приложение само может создавать этот файл, и вам не придется распространять вашу игру под Windows вместе с ini-файлом.

Во всех других платформах: Flash, IOS, Android, XNA и HTML5 ini-файл встраивается в само приложение, и для экспортеров создать сохранение еще проще даже, чем для Windows. Но давайте пойдем по порядку, что бы полностью разобраться с этим вопросом.

Для начала сделаем простую сохранялку для Windows и вручную создадим файл .ini.

Сохранение делается в 3 шага:

  • Создать файл .ini
  • Подключить файл .ini
  • Использовать файл .ini

Кастомный провайдер конфигурации

Для того, чтобы написать свой поставщик конфигурации необходимо реализовать интерфейсы IConfigurationProvider и IConfigurationSource. IConfigurationSource новый интерфейс, который мы еще не рассматривали в данной статье.

Интерфейс состоит из единственного метода Build, который принимает в качестве параметра IConfigurationBuilder и возвращает новый экземпляр IConfigurationProvider.

Для реализации своих поставщиков конфигурации нам доступны абстрактные классы ConfigurationProvider и FileConfigurationProvider. В этих классах уже реализована логика методов TryGet, Set, GetReloadToken, GetChildKeys и остается реализовать только метод Load.

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

Создадим класс YamlConfigurationProvider и сделаем его наследником FileConfigurationProvider.

В приведенном фрагменте кода можно заметить некоторые особенности класса FileConfigurationProvider. Конструктор принимает экземпляр FileConfigurationSource, который содержит в себе IFileProvider. IFileProvider используется для чтения файла, и для подписки на событие изменения файла. Также можно заметить, что метод Load принимает Stream в котором открыт для чтения файл конфигурации. Это метод класса FileConfigurationProvider и его нет в интерфейсе IConfigurationProvider.

Добавим простую реализацию, которая позволит считать yaml-файл. Для чтения файла я воспользуюсь пакетом YamlDotNet.

Для создания экземпляра нашего провайдера конфигурации необходимо реализовать FileConfigurationSource.

Для регистрации кастомного провайдера конфигурации в приложении необходимо добавить экземпляр провайдера в IConfigurationBuilder. Можно вызвать метод Add из IConfigurationBuilder, но я сразу вынесу логику инициализации YamlConfigurationProvider в extension-метод.

Префикс по умолчанию

@anchor{Default Prefix}

По умолчанию задает префикс для устанавливаемых файлов
равным `/usr/local'. Пользователь может выбрать
другой префикс, используя ключи командной строки `—prefix’ и
`—exec-prefix’. Есть два способа изменения значения по
умолчанию: при создании и при его запуске.

Некоторые пакеты программного обеспечения могут требовать установки по
умолчанию в каталог, отличный от `/usr/local'. Чтобы изменить
значение по умолчанию, используйте макрос .

Macro: AC_PREFIX_DEFAULT (prefix)

Устанавливает значение префикса установки по умолчанию в значение
prefix вместо `/usr/local'.

Для пользователей может быть удобным, чтобы попытался
угадать префикс для установки на основе расположения некоторых программ,
которые уже установлены в системе. Если вы хотите именно этого,
используйте макрос .

Macro: AC_PREFIX_PROGRAM (program)

Если пользователь не указал префикс для установки (используя ключ
`—prefix’), то попробовать определить значение префикса на основе
поиска program в списке каталогов из . Если
program найдена, то установить префикс равным родительскому
каталогу каталога, в котором находится program; иначе оставить
неизмененным значение префикса, указанного `Makefile.in'. Например,
если значением program является , а в путях найдена программа
`/usr/local/gnu/bin/gcc', то значением префикса будет
`/usr/local/gnu'.

Причины ошибок в файле CONFIG12.EXE

Проблемы CONFIG12.EXE могут быть отнесены к поврежденным или отсутствующим файлам, содержащим ошибки записям реестра, связанным с CONFIG12.EXE, или к вирусам / вредоносному ПО.

Более конкретно, данные ошибки CONFIG12.EXE могут быть вызваны следующими причинами:

  • Поврежденные ключи реестра Windows, связанные с CONFIG12.EXE / Master Hacker.
  • Вирус или вредоносное ПО, которые повредили файл CONFIG12.EXE или связанные с Master Hacker программные файлы.
  • Другая программа злонамеренно или по ошибке удалила файлы, связанные с CONFIG12.EXE.
  • Другая программа находится в конфликте с Master Hacker и его общими файлами ссылок.
  • Поврежденная загрузка или неполная установка программного обеспечения Master Hacker.

Попытка №3

А сейчас, я хотел бы показать Вам свою библиотеку, которая призвана решить все эти проблемы (ну, или хотя бы уменьшить ваши страдания :)).

Называется она и доступна на PyPi.

Установка так же проста, как и любой другой библиотеки:

Изначально, наш конфиг представлен в виде класса с полями:

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

Из этого примера следует, что мы можем применять различные провайдеры для получения данных. И это действительно иногда бывает удобно, говорю из личного опыта.

Хорошо, а что если у нас в конфигах есть булевые значения, или числа, они же в итоге будут все равно приходить в строках. И для этого есть решение:

Таким образом, все похожие на булевые типы значения (а именно и будут преобразованы в питоновский . Регистр не учитывается.

Свой кастер написать также легко:

Итоги

Таким образом, мы пришли к выводу, что хранить настройки в исходных кодах — не есть хорошо. Для этого уже придуманы различные форматы. Ну, а вы познакомились с ещё одной полезной (как я считаю :)) библиотекой.

Устранение неполадок при открытии файлов CONFIG

Общие проблемы с открытием файлов CONFIG

Microsoft Notepad не установлен

Дважды щелкнув по файлу CONFIG вы можете увидеть системное диалоговое окно, в котором сообщается «Не удается открыть этот тип файла». В этом случае обычно это связано с тем, что на вашем компьютере не установлено Microsoft Notepad для %%os%%. Так как ваша операционная система не знает, что делать с этим файлом, вы не сможете открыть его дважды щелкнув на него.

Совет: Если вам извстна другая программа, которая может открыть файл CONFIG, вы можете попробовать открыть данный файл, выбрав это приложение из списка возможных программ.

Установлена неправильная версия Microsoft Notepad

В некоторых случаях у вас может быть более новая (или более старая) версия файла Configuration File, не поддерживаемая установленной версией приложения. При отсутствии правильной версии ПО Microsoft Notepad (или любой из других программ, перечисленных выше), может потребоваться загрузить другую версию ПО или одного из других прикладных программных средств, перечисленных выше. Такая проблема чаще всего возникает при работе в более старой версии прикладного программного средства с файлом, созданным в более новой версии, который старая версия не может распознать.

Совет: Иногда вы можете получить общее представление о версии файла CONFIG, щелкнув правой кнопкой мыши на файл, а затем выбрав «Свойства» (Windows) или «Получить информацию» (Mac OSX).

Резюме: В любом случае, большинство проблем, возникающих во время открытия файлов CONFIG, связаны с отсутствием на вашем компьютере установленного правильного прикладного программного средства.

Даже если на вашем компьютере уже установлено Microsoft Notepad или другое программное обеспечение, связанное с CONFIG, вы все равно можете столкнуться с проблемами во время открытия файлов Configuration File. Если проблемы открытия файлов CONFIG до сих пор не устранены, возможно, причина кроется в других проблемах, не позволяющих открыть эти файлы. Такие проблемы включают (представлены в порядке от наиболее до наименее распространенных):

Номера версий в configure

@anchor{Versions}

Следующие макросы используются для работы с номерами версий в скриптах
. Их использование не обязательно.

Macro: AC_PREREQ (version)

Обеспечивает проверку того, что используется достаточно свежая версия
Autoconf. Если версия Autoconf, используемая для создания
, является более старой, чем version, то в
стандартный поток сообщений об ошибках выдается сообщение и
не создается. Например:

AC_PREREQ(1.8)

Этот макрос полезен в том случае, если ваш `configure.in'
полагается на неочевидное поведение, которое изменилось между
версиями Autoconf. Если вам необходимы только недавно добавленные
макросы, то чуть менее полезен, поскольку программа
и так сообщит пользователю о том, какие макросы не
найдены. То же самое случится в том случае, если файл `configure.in'
будет обрабатываться версией Autoconf, более старой, чем та, в которой
был добавлен макрос .

Macro: AC_REVISION (revision-info)

Копирует метки ревизий revision-info в скрипт ,
удаляя знаки доллара и двойные кавычки. Этот макрос позволяет
вам помещать метки версий из файла `configure.in' в
, но при этом RCS или CVS не станут изменять
их при помещении в репозиторий. Таким образом, вы
можете легко определить, какая версия
`configure.in' соответствует конкретному .

Хорошей идеей является вызов этого макроса перед , чтобы
номер ревизии располагался в начале и `configure.in', и
. Для поддержки этого выдача
начинается с `#! /bin/sh’, подобно обычному началу скрипта
.

Вот пример этой строки в `configure.in':

AC_REVISION($Revision: 1.5 $)dnl

это создает в строки:

#! /bin/sh
# From configure.in Revision: 1.30

Go to the first, previous, next, last section, table of contents.

8. touch

Вот мы и подобрались к непосредственному созданию файлов через терминал, для этого в Linux есть специальная утилита touch. Она позволяет создать пустой файл в Linux, при этом указывать дату создания, права доступа и другие метаданные.

Чтобы создать пустой файл Linux, просто наберите:

Можно создать несколько пустых файлов сразу:

Опция -t позволяет установить дату создания. Дата указывается опцией -t в формате YYMMDDHHMM.SS. Если не указать, будет установлена текущая дата. Пример:

Можно использовать дату создания другого файла:

Также можно установить дату последней модификации, с помощью опции -m:

Или дату последнего доступа:

Чтобы посмотреть, действительно ли задаётся информация, которую вы указали, используйте команду stat:

Отслеживание изменений

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

  • Поставщик конфигурации отслеживает изменение источника конфигурации
  • Если произошло изменение конфигурации, создается новый IChangeToken
  • При изменении IChangeToken вызывается перезагрузка конфигурации

Посмотрим как реализовано отслеживание изменений в FileConfigurationProvider.

В метод OnChange статического класса ChangeToken передается два параметра. Первый параметр это функция которая возвращает новый IChangeToken при изменении источника конфигурации (в данном случае файла), это т.н producer. Вторым параметром идет функция-callback (или consumer), которая будет вызвана при изменении источника конфигурации.
Подробнее о классе ChangeToken.

Не все провайдеры конфигурации реализуют отслеживание изменений. Этот механизм доступен для потомков FileConfigurationProvider и AzureKeyVaultConfigurationProvider.

Устранение неполадок при открытии файлов CONFIGS

Общие проблемы с открытием файлов CONFIGS

Unknown Apple II File не установлен

Дважды щелкнув по файлу CONFIGS вы можете увидеть системное диалоговое окно, в котором сообщается «Не удается открыть этот тип файла». В этом случае обычно это связано с тем, что на вашем компьютере не установлено Unknown Apple II File для %%os%%. Так как ваша операционная система не знает, что делать с этим файлом, вы не сможете открыть его дважды щелкнув на него.

Совет: Если вам извстна другая программа, которая может открыть файл CONFIGS, вы можете попробовать открыть данный файл, выбрав это приложение из списка возможных программ.

Установлена неправильная версия Unknown Apple II File

В некоторых случаях у вас может быть более новая (или более старая) версия файла Unknown Apple II File, не поддерживаемая установленной версией приложения. При отсутствии правильной версии ПО Unknown Apple II File (или любой из других программ, перечисленных выше), может потребоваться загрузить другую версию ПО или одного из других прикладных программных средств, перечисленных выше. Такая проблема чаще всего возникает при работе в более старой версии прикладного программного средства с файлом, созданным в более новой версии, который старая версия не может распознать.

Совет: Иногда вы можете получить общее представление о версии файла CONFIGS, щелкнув правой кнопкой мыши на файл, а затем выбрав «Свойства» (Windows) или «Получить информацию» (Mac OSX).

Резюме: В любом случае, большинство проблем, возникающих во время открытия файлов CONFIGS, связаны с отсутствием на вашем компьютере установленного правильного прикладного программного средства.

Даже если на вашем компьютере уже установлено Unknown Apple II File или другое программное обеспечение, связанное с CONFIGS, вы все равно можете столкнуться с проблемами во время открытия файлов Unknown Apple II File. Если проблемы открытия файлов CONFIGS до сих пор не устранены, возможно, причина кроется в других проблемах, не позволяющих открыть эти файлы. Такие проблемы включают (представлены в порядке от наиболее до наименее распространенных):

Провайдеры конфигурации

За чтение данных из источника конфигурации отвечает объект интерфейсаIConfigurationProvider:

  • TryGet(string key, out string value) позволяет по ключу получить значение параметра конфигурации
  • Set(string key, string value) используется для установки значения параметра конфигурации
  • GetReloadToken() возвращает экземпляр IChangeToken, который можно использовать для получения уведомлений при изменении источника конфигурации
  • Load() метод который отвечает за чтение источника конфигурации
  • GetChildKeys(IEnumerable<string> earlierKeys, string parentPath) позволяет получить список всех ключей, которые предоставляет данный поставщик конфигурации

Из коробки доступны следующие провайдеры:

  • Json
  • Ini
  • Xml
  • Environment Variables
  • InMemory
  • Azure
  • Кастомный провайдер конфигурации

Приняты следующие соглашения использования провайдеров конфигурации.

  1. Источники конфигурации считываются в том порядке, в котором они были указаны
  2. Если в разных источниках конфигурации присутствуют одинаковые ключи (сравнение идет без учета регистра), то используется значение, которое было добавлено последним.

Если мы создаем экземпляр web-сервера используя CreateDefaultBuilder, то по умолчанию подключаются следующие провайдеры конфигурации:

  • ChainedConfigurationProvider через этот провайдер можно получать значения и ключи конфигурации, которые были добавлены другими провайдерами конфигурации
  • JsonConfigurationProvider использует в качестве источника конфигурации json-файлы. Как можно заметить, в список провайдеров добавлены три провайдера данного типа. Первый использует в качестве источника appsettings.json, второй appsettings.{environment}.json. Третий считывает данные из secrets.json. Если выполнить сборку приложения в конфигурации Release, третий провайдер не будет подключен, потому что не рекомендуется использовать секреты в Production-среде
  • EnvironmentVariablesConfigurationProvider получает параметры конфигурации из переменных окружения
  • CommandLineConfigurationProvider позволяет добавлять аргументы командой строки в конфигурацию

Так как конфигурация хранится как словарь, то необходимо обеспечить уникальность ключей. По умолчанию это работает так.

Если в провайдере CommandLineConfigurationProvider имеется элемент с ключом key и в провайдере JsonConfigurationProvider имеется элемент с ключом key, элемент из JsonConfigurationProvider будет заменен элементом из CommandLineConfigurationProvider так как он регистрируется последним и имеет больший приоритет.

Резюме файла CONF

Расширение файла CONF имеет два тип (-ов) файла (-ов) и связано с восемь различными программными обеспечениями, но главным образом с Microsoft Notepad, разработанным Microsoft Corporation. Часто они представлены в формате Generic Configuration File.
В большинстве случаев эти файлы относятся к Settings Files.

Файлы CONF были обнаружены на платформах Windows, Mac и Linux. Они подходят для настольных ПК (и мобильных устройств).

Рейтинг популярности расширения файла CONF составляет «Низкий», что означает, что эти файлы, как правило, не встречаются в большинстве файловых хранилищ пользователя.

Попытка №1

А что насчёт того чтобы хранить конфигурацию в коде? Ну, а что, вроде удобно, да и новых языков не придётся изучать. Существует множество проектов, в которых данный способ используется, и хочу сказать, вполне успешно.

Типичный конфиг в этом стиле выглядит так:

Выглядит неплохо. Только одно настораживает, почему секьюрные данные хранятся в коде? Как мы это коммитить будем? Загадка. Разве что вносить наш файл в , но это, конечно, вообще не решение.

Да и вообще, почему хоть какие-то данные хранятся в коде? Как мне кажется код, он на то и код, что должен выполнять какую-то логику, а не хранить данные.

Данный подход, на самом деле используется много где. В том же Django. Все думают, что раз это самый популярный фреймворк, который используется в самом Инстаграме, то они то уж плохое советовать не будут. Жаль, что это не так.

6 ответов

2

Лучший ответ

Он не предназначен для этого.

Вы можете использовать классы System.Configuration.ConfigurationSettings, чтобы явно открыть файл в коде, чтобы прочитать ваши настройки. Это будет работать, однако дизайнер не даст вам никакой помощи в создании ваших файлов настроек.

У вас есть проблема с настройками класса?

Другой способ, который может помочь вам, — создать настраиваемый раздел конфигурации, который вы можете поместить в файл. Затем вы можете разбить каждый из ваших настроек в свой собственный раздел конфигурации. Это может удовлетворить ваши цели?

23 янв. 2010, в 21:23
Поделиться

2

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

23 янв. 2010, в 20:19
Поделиться

1

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

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

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

24 янв. 2010, в 09:45
Поделиться

Многие из текущих контейнеров IoC позволят вам делать такие вещи через возможности инъекции зависимостей (DI). Фактически, когда конфигурация XML была полной яростью в DI-стране, вы бы в значительной степени получили все это из коробки. Сегодня многие контейнеры IoC поддерживают программный способ настройки зависимостей, которые вы можете легко подключить к любому XML файлу, который вы хотите предоставить. Проверьте этот пример с контейнером IoC StructureMap:

Разбирая XML файл, содержащий информацию типа целевого типа, имя свойства, его значение, а затем вызывающий выше API, вы можете получить то, что хотите.

24 янв. 2010, в 18:38
Поделиться

Как и в других ответах, никакие файлы конфигурации не относятся к классу, вам лучше всего создать класс, который обрабатывает извлечение и настройку конфигурации (интерфейс в стиле ConfigManager).

Я бы хотел спросить вас, действительно ли вам нужна конфигурация для каждого класса?

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

Если ваш дизайн требует конфигурации для каждого класса, возможно, вам лучше будет хранить его в базе данных или на другом носителе?

23 янв. 2010, в 21:36
Поделиться

Вам придется делать это вручную, как предложили другие. Тем не менее, я бы настоятельно рекомендовал против этого, так как я думаю, что в конце концов у вас будет кошмар конфигурации.

23 янв. 2010, в 20:40
Поделиться

Ещё вопросы

  • 3Наследование атрибутов Moq и параметров
  • 3Как использовать ProcessStartInfo для запуска командного файла?
  • 3Проблема десериализации со словарем
  • 3Расширение файла — c #
  • 3Где мои перегрузки конструктора клиента WCF?
  • 3Должен ли я использовать каскадирование коллекции NHibernate
  • 3Расстояние (футы, дюймы) класс или структура
  • 3какой из них является основным файлом конфигурации для приложения, написанного WPF?
  • 3Почему блок приложения кэширования EntLib использует неправильный файл конфигурации
  • 3Лучшие практики для пользовательских настроек / конфигурации в клиентском приложении ac #

Создание выходных файлов

@anchor{Output}

Каждый скрипт , созданный Autoconf, должен заканчиваться
вызовом макроса . Этот макрос создает файлы `Makefile'
и, может быть, дополнительные файлы, которые являются результатом
конфигурации. Еще одним обязательным макросом является
(see section ).

Macro: AC_OUTPUT ([file… [, extra-cmds [, init-cmds]]])

Создает выходные файлы. Вызовите этот макрос один раз в конце файла
`configure.in'. Аргумент file… является списком
выходных файлов через пробел; этот список может быть пустым. Этот макрос создает
каждый из файлов `file', копируя входной файл (который по умолчанию
называется `file.in') и подставляя значения выходных переменных.
Для более детального описания использования выходных переменных
See section .
Для детального описания того, как создавать
такие переменные See section . Этот макрос создает
каталог,
в котором находится файл, если этот каталог не существует (но не создает
родительские каталоги для этого каталога). Обычно таким образом создаются
файлы `Makefile', но можно указать также и другие файлы, такие
как `.gdbinit'.

Если вызывались макросы , или
, то этот макрос также создает файлы, указанные в
аргументах этих макросов.

Типичный вызов выглядит примерно так:

AC_OUTPUT(Makefile src/Makefile man/Makefile X/Imakefile)

Вы можете переопределить имена входных файлов, добавив к file список
входных файлов, который разделен двоеточием. Например:

AC_OUTPUT(Makefile:templates/top.mk lib/Makefile:templates/lib.mk)
AC_OUTPUT(Makefile:templates/vars.mk:Makefile.in:templates/rules.mk)

Это позволит вам сохранить имена файлов в формате MS-DOS,
или для добавления стандартных кусков кода кода в начало или конец файла.

В параметре extra-cmds можно указать команды, которые будут
вставлены в файл `config.status' и сработают после того, как было
сделано все остальное. В параметре init-cmds можно указать
команды, которые будут вставлены непосредственно перед extra-cmds,
причем выполнит в них подстановку переменных, команды и
обратных слэшей. Аргумент init-cmds можно использовать для
передачи переменных из в
extra-cmds. Если был вызван макрос , то
команды,
переданные ему в качестве аргумента, выполняются прямо перед командами,
переданными макросу .

Macro: AC_OUTPUT_COMMANDS (extra-cmds [, init-cmds])

Задает дополнительные команды командного процессора, которые выполняются
в конце `config.status', а также команды для инициализации
переменных в . Этот макрос можно вызывать несколько
раз. Вот нереальный пример:

fubar=27
AC_OUTPUT_COMMANDS(, fubar=$fubar)
AC_OUTPUT_COMMANDS(, )

Если вам нужно запустить в подкаталогах, то это следует
делать с помощью переменной . Большинство версий программы
устанавливают значение переменной равным имени
программы с дополнительно заданными ключами. (Но многие
версии не включаются сюда значения переменных, заданных в командной
строке, поэтому они не передаются автоматически). Некоторые старые версии команды
не устанавливают эту переменную. Следующий макрос позволяет
вам использовать переменную даже таких старых версий.

Macro: AC_PROG_MAKE_SET

Если определяет переменную , то переменная
получает пустое значение. Иначе, определяется переменная
со значением `MAKE=make’. Для переменной
вызывается макрос .

Для использования данного макроса поместите следующую строку в каждый из
файлов `Makefile.in', в котором производится запуск
для подкаталогов:

@SET_MAKE@

Заключение

В .NET Core у нас появился легкий, удобный механизм для управления настройками приложения. Много надстроек доступно из коробки, многие вещи используются по умолчанию.
Конечно каждый сам решает, какой способ ему использовать, но я за то, чтобы люди знали свои инструменты.

Данная статья затрагивает лишь основы. Помимо основ нам доступны IOptions, сценарии пост-конфигурации, валидация настроек и многое другое. Но это уже другая история.

upd.: Как верно подсказал AdAbsurdum, в случае работы с массивами не всегда будет происходит замена элементов при слиянии конфигурации из двух источников.
Рассмотрим пример. При чтении массива из appsettings.json получим такой плоский вид:

При чтении из appsettings.Development.json:

В итоге в конфигурации будет:

Все элементы с уникальными индексами (array:1 в примере) будут добавлены в итоговый массив. Элементы из разных источников конфигурации, но имеющие одинаковый индекс (array:0 в примере) подвергнутся слиянию, и будет использован элемент, который был добавлен последним.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector