Ответ 1
Update:
Для текущего (нового).csproj формата должен использоваться атрибут CopyToPublishDirectory
. Он определяет, следует ли копировать файл в каталог публикации и может иметь одно из следующих значений:
- Всегда,
- PreserveNewest
- Никогда
Итак, добавьте следующий раздел в свой .csproj
:
<ItemGroup>
<None Include="appsettings.Production.json" CopyToPublishDirectory="Always" />
</ItemGroup>
Посмотрите @nover answer и SO Исключить или включить файлы в публикации для получения дополнительной информации о управлении файлами во время публикации.
"В вашем файле project.json
у вас есть раздел publishOptions
с подразделением include
, где у вас уже есть такие файлы, как" appsettings.json ":
"publishOptions": {
"include": [
"appsettings.json",
"hosting.json",
"project.json",
"web.config"
]
},
Вы должны добавить "appsettings.Production.json"
в этот массив.
Обновления на основе комментариев:
-
Имейте в виду, что все файлы
appsettings.*.json
, такие какappsettings.development.json
,appsettings.staging.json
иappsettings.production.json
, всегда будут работать во всех средах. Вы не можете просто обрабатывать это с помощьюproject.json
, так как он не поддерживает никаких правил условий. Это будет изменено в будущем, когдаproject.json
будет заменить обратно наmsbuild
и.csproj
. Если это важно для вашего приложения, подумайте о том, чтобы использовать другое хранилище конфигурации, такое как переменная среды, база данных и т.д. -
Обратите внимание, что этот порядок важен, так как определите, какие настройки будут применяться, если они существуют в нескольких местах. Из документация:
Указан порядок, в котором указаны источники конфигурации, поскольку это устанавливает приоритет, с которым будут применяться параметры, если они существуют в нескольких местах. В приведенном ниже примере, если тот же параметр существует и в appsettings.json, и в переменной среды, параметр из переменной среды будет тем, который используется. Последний источник конфигурации указывает "выигрывает", если параметр существует в нескольких местах. Команда ASP.NET рекомендует специфицировать переменные среды последним, так что локальное окружение может переопределить все, что установлено в развернутых конфигурационных файлах.