... и с момента моего первоначального комментария я обнаружил, что преобразования web.config полностью поддерживаются VS 2017 и MS Build для .NET Core, как только вы поймете, что командам вложения и преобразования не нужно быть частью проекта больше. Больше не используйте команду "Добавить преобразования конфигурации" в вашем файле web.config, если только вы не найдете исправление, которое не повредит файл вашего проекта. Просто добавьте вручную трансформированные версии вашего web.config, и они автоматически будут вложены и запущены при публикации. Да против 2017 года!
Следующее, в вашем web.Release.config очень хорошо работает для установки вашей переменной среды.
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<location>
<system.webServer>
<aspNetCore>
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" xdt:Locator="Match(name)" xdt:Transform="SetAttributes" />
</environmentVariables>
</aspNetCore>
</system.webServer>
</location>
</configuration>
Кроме того, в .NET Core 2.2 вам больше не нужно добавлять дополнительные преобразования набора параметров приложения (отключая переменную среды) в класс запуска. Это по умолчанию ...
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
... автоматически принимает код принятого ответа.
Суть в том, что, как непростительный разработчик Microsoft, я все еще хочу предположить, что мое приложение будет опубликовано только на сервере IIS с использованием MS Build и Web Deploy, и я хотел бы иметь возможность конфигурировать свое приложение через собственный конфиг приложения; и я хочу иметь возможность делать это в Build, а не как команду командной строки публикации или пост-публикации. Если Microsoft или кто-то создаст простой плагин сборки для Visual Studio, который преобразует мой файл appsettings.json, и я опубликую только то, что необходимо для данной среды, я с радостью воспользуюсь им, но я не нашел его или имел время написать еще.
И именно поэтому я обязательно отвечу на вопрос ОП напрямую: AppSettings можно легко перенести из web.config в appsettings.json и, вероятно, следует, если вы понимаете, что ВСЕ файлы appsettings.json опубликованы, и определяется во время выполнения, в отличие от настоящего решения для преобразования, где публикуются только необходимые файлы и настройки, на основе запрошенного профиля. Использование преобразования web.config только для установки переменной среды, необходимой для определения того, какие наборы приложений. {Env} .json файл использовать. Опять же, вся эта дискуссия идет по пути Додо, если мы можем преобразовать наш файл apsettings.json так же, как наш web.config, в соответствии с запросом OP. У меня есть ощущение, что когда-нибудь это произойдет, если еще не произошло.
Да, переход с устаревшей .NET Framework на .NET Core может быть увлекательным занятием. .NET Core - огромный шаг вперед, но есть несколько препятствий, которые нужно преодолеть; особенно для тех, кто был в наследство с самого начала.