Предпосылки, которые я сделал:
Создан простой проект веб-API по шаблону «Базовое веб-приложение ASP.NET» (выбран ASP.NET NetCore 2.1). Создан профиль публикации со следующей конфигурацией
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<WebPublishMethod>Package</WebPublishMethod>
<PublishProvider>FileSystem</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<ProjectGuid>ca211ccb-1868-47d8-a6nd-c30347faa49e</ProjectGuid>
<DeleteExistingFiles>False</DeleteExistingFiles>
<PackageLocation>C:\Test\Publish\CoreWebApi.zip</PackageLocation>
<DeployIisAppPath>Default Web Site/WebEngine555</DeployIisAppPath>
</PropertyGroup>
</Project>
, который помогает создать пакет zip.
После развертывания этого пакета в IIS (я сделал это следующей командой)
C:\Program Files (x86)\IIS\Microsoft Web Deploy V3>msdeploy.exe -verb:sync -source:package="C:\Test\Publish\CoreWebApi.zip" -dest:auto="C:\inetpub\wwwroot\WebEngine"
- (Я бы хотел изменить это -dest: auto с более конкретным провайдером, но похоже, что он работает только с этим провайдером и не знает, как искать или изменять манифест, чтобы сделать пакет с исходным кодом совместимым с другими провайдерами .)
Он устанавливает пакет в корневой каталог "C: \ inetpub \ wwwroot" (веб-сайт по умолчанию, удаляя из него все остальное содержимое).
Возможно ли на этапе настройки MSBuild через файл .pubxml указать путь установки (виртуальный путь) не в корневую папку, а хотя бы в подпапку? Я смог сделать это, запустив
C:\Program Files (x86)\IIS\Microsoft Web Deploy V3>msdeploy.exe -verb:sync -source:package="C:\Test\Publish\CoreWebApi.zip"
-dest:auto="Default Web Site/WebEngine"
-setParam:name="IIS Web Application Name",
value="Default Web Site/WebEngine5"
Также здесь Msdeploy заменяет атрибут
найти хороший ответ, но он работает только для простого нового веб-API. Когда я пытаюсь сделать то же самое для существующего проекта, он всегда использует папку '.. \ obj \ Release \ netcoreapp2.1 \ PubTmp \ Out \' в качестве места назначения синхронизации и вообще не копирует файлы в папку IIS. А с параграфами abouve это просто ничего не копирует
Какой параметр должен на это влиять? Некоторые цели , кажется, игнорируются в новом конвейере. Я провел много экспериментов, по моему мнению, самыми полезными ссылками были blog , sdk , official , но все еще не мог найти способ выбрать папку публикации при развертывании.