Как расширить конвейер msdeploy/ публикации для приложений.NET Core

Веб-приложения старого стиля /.NET Framework в Visual Studio имеют конвейер публикации, который можно настраивать. Например, Parameters.xml файл может быть указан, например, так:

  <PropertyGroup>
    <WebAppPackageConfigDir Condition=" '$(WebAppPackageConfigDir)' == '' ">$(MSBuildProjectDirectory)\Package</WebAppPackageConfigDir>
    <ProjectParametersXMLFile>$(WebAppPackageConfigDir)\Parameters.xml</ProjectParametersXMLFile>
  </PropertyGroup>

так что при сборке пакета MSDeploy определенные в нем параметры MSDeploy включаются в пакет. Трубопровод веб-обработки (в основном определяется в C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.targets) поддерживает настройку пакета MSDeploy несколькими способами - например, параметры пакета могут быть определены в файле или в MSBuild <ItemGroup>,

В веб-приложениях в стиле SDK (например, в веб-приложениях ASP.NET Core) используется "новый" конвейер публикации, начиная, например, с C\Program Files\dotnet\sdk\2.1.2\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Publish.targets, Это тянет в дополнительные файлы целей в зависимости от <PublishProtocol> значение, например C\Program Files\dotnet\sdk\2.1.2\Sdks\Microsoft.NET.Sdk.Publish\build\netstandard1.0\PublishTargets\Microsoft.NET.Sdk.Publish.MSDeploy.targets за PublishProtocol=MSDeploy или же .\Microsoft.NET.Sdk.Publish.MSDeployPackage.targets за PublishProtocol=MSDeployPackage, Оба файла определяют _CreateParametersFiles цель как:

  <!--
  ***********************************************************************************************
  TARGET : _CreateParameterFiles
  ***********************************************************************************************
 -->

  <Target Name="_CreateParameterFiles">

    <ItemGroup>
      <MsDeployDeclareParameters Remove="@(MsDeployDeclareParameters)" />

      <MsDeployDeclareParameters Include="IIS Web Application Name" >
        <Kind>ProviderPath</Kind>
        <Scope>IisApp</Scope>
        <Match>$(PublishIntermediateOutputPath)</Match>
        <Description></Description>
        <DefaultValue>$(DeployIisAppPath)</DefaultValue>
        <Value>$(DeployIisAppPath)</Value>
        <Tags>IisApp</Tags>
        <Priority></Priority>
        <ExcludeFromSetParameter>false</ExcludeFromSetParameter>
      </MsDeployDeclareParameters>
    </ItemGroup>

    <ItemGroup Condition="'@(_EFSQLScripts)' != ''">
      <MsDeployDeclareParameters Include="%(_EFSQLScripts.DBContext)">
        <Kind>ProviderPath</Kind>
        <Scope>dbfullsql</Scope>
        <Match>%(_EFSQLScripts.Identity)</Match>
        <Description></Description>
        <DefaultValue>%(_EFSQLScripts.ConnectionString)</DefaultValue>
        <Value>%(_EFSQLScripts.ConnectionString)</Value>
        <Tags>dbfullsql</Tags>
        <Priority></Priority>
        <ExcludeFromSetParameter>false</ExcludeFromSetParameter>
      </MsDeployDeclareParameters>
    </ItemGroup>

    <CreateParameterFile
      Parameters="@(MsDeployDeclareParameters)"
      DeclareSetParameterFile="$(_MSDeployParametersFilePath)"
      IncludeDefaultValue="True"
      OptimisticParameterDefaultValue="$(EnableOptimisticParameterDefaultValue)"
      SetParameterFile="$(_MSDeploySetParametersFilePath)"
      GenerateFileEvenIfEmpty="True" />
  </Target>

Похоже, что нет поддержки для настройки параметров развертывания. Точно так же <Target Name="_CreateManifestFiles"> Похоже, что цель запрещает настройку.

WPP (конвейер веб-публикаций - предыдущая реализация) является / был неуклюжим, но были статьи / посты в блогах о том, как его настроить. В ASP.NET Core нет упоминания о настройке или расширении процесса развертывания, который я могу найти. Я нашел видео Channel 9 по публикации ASP.NET, но оно выглядит устаревшим - оно применяется к VS 2017 с сценариями project.json и powershell, используемыми для развертывания, и похоже, что оно было отменено в пользу целей MSBuild.

Я также нашел https://github.com/aspnet/websdk/blob/dev/README.md#microsoftnetsdkpublish, который документирует некоторые части настроек msdeploy, которые могут быть изменены, но я все равно утверждаю, что поддержка отсутствует для расширения трубопровода.

Я понимаю, что отсутствие доступной информации означает "разберись сам", что сложно при работе с MSBuild и MSDeploy. Кто-нибудь имел успехи в настройке конвейера развертывания для веб-приложений ASP.NET Core?

0 ответов

Другие вопросы по тегам