Публикация.Net Core 2 WebApp в iis из пакета (zip)
Предпосылки я сделал:
Создан простой проект веб-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 это просто ничего не копировать
даже с параметрами в файле.pubxml:
Веб-сайт по умолчанию /MeWebApp Веб-сайт по умолчанию /MeWebApp C:\inetpub\wwwroot\Test2 C:\inetpub\wwwroot\Test1
Какой параметр должен на это влиять? Некоторые цели, кажется, игнорируются в новом конвейере. Я провел много экспериментов, на мой взгляд, самыми полезными ссылками были blog, sdk, official, но я все еще не мог найти способ выбрать папку публикации при развертывании.