提问人:crimbo 提问时间:12/13/2017 更新时间:12/13/2017 访问量:658
如何扩展 .NET Core 应用的 msdeploy/发布管道
How to extend msdeploy/publishing pipeline for .NET Core apps
问:
Visual Studio 中的旧样式/.NET Framework Web 应用具有可自定义的发布管道。例如,可以指定一个文件,如下所示:Parameters.xml
<PropertyGroup>
<WebAppPackageConfigDir Condition=" '$(WebAppPackageConfigDir)' == '' ">$(MSBuildProjectDirectory)\Package</WebAppPackageConfigDir>
<ProjectParametersXMLFile>$(WebAppPackageConfigDir)\Parameters.xml</ProjectParametersXMLFile>
</PropertyGroup>
因此,在生成 MSDeploy 包时,其中定义的 MSDeploy 参数将合并到包中。Web 处理管道(主要在 中定义)支持以多种方式自定义 MSDeploy 包 - 例如,可以在文件或 MSBuild 中定义包参数。C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.targets
<ItemGroup>
在 SDK 样式的 Web 应用程序(例如 ASP.NET Core webapps)中,从 例如 .这将根据值(例如 for 或 for )拉入其他目标文件。这两个文件都将目标定义为: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(Web 发布管道 - 以前的实现)很笨拙,但有关于如何自定义它的文章/博客文章。在 ASP.NET Core 中,我找不到任何关于自定义或扩展部署过程的提及。我确实在 ASP.NET Publishing 上找到了一个第 9 频道视频,但它似乎已经过时了 - 它适用于 VS 2017,其中包含用于部署的 project.json 和 powershell 脚本,并且似乎已废弃以支持 MSBuild 目标。
我还找到了 https://github.com/aspnet/websdk/blob/dev/README.md#microsoftnetsdkpublish,它记录了可以更改的 msdeploy 设置的一些部分,但我仍然声明不支持扩展管道。
我将缺乏可用信息解释为“自己弄清楚”,这在处理 MSBuild 和 MSDeploy 时具有挑战性。是否有人成功自定义了 ASP.NET Core Web 应用的部署管道?
答: 暂无答案
评论