Это возможно со встроенными функциями и небольшой модификацией вашего файла csproj.
Добавьте эти строки в свой файл csproj, и он создаст обновленный web.config для каждой сборки. Он берет ваш файл web.config в папке Config, применяет к нему преобразование из выбранного файла конфигурации преобразования, а затем помещает вывод в корневой каталог.
<PropertyGroup>
<BuildDependsOn>
CustomWebConfigTransform;
$(BuildDependsOn);
</BuildDependsOn>
</PropertyGroup>
<Target Name="CustomWebConfigTransform">
<TransformXml source="$(ProjectDir)\Config\Web.config"
transform="$(ProjectDir)\Config\Web.$(Configuration).config"
destination="Web.config" />
</Target>
Я подтвердил, что это работает для подпапок. Я использую версию этого без подпапок для моих проектов веб-API. Я рекомендую исключить корневой файл web.config из исходного элемента управления, поскольку он будет меняться каждый раз, когда вы будете строить с другой конфигурацией.
Кроме того, если на вашем сервере сборки нет доступных инструментов веб-разработчика, преобразование не будет работать.