cri*_*mbo 5 msdeploy webdeploy msbuild-wpp visual-studio-2017 asp.net-core-2.0
Visual Studio 中的旧样式/.NET Framework webapps 有一个可以自定义的发布管道。例如,Parameters.xml可以指定一个文件,如下所示:
<PropertyGroup>
<WebAppPackageConfigDir Condition=" '$(WebAppPackageConfigDir)' == '' ">$(MSBuildProjectDirectory)\Package</WebAppPackageConfigDir>
<ProjectParametersXMLFile>$(WebAppPackageConfigDir)\Parameters.xml</ProjectParametersXMLFile>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
以便在构建 MSDeploy 包时,将其中定义的MSDeploy 参数合并到包中。Web 处理管道(主要在 中定义C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\Web\Microsoft.Web.Publishing.targets)支持以多种方式自定义 MSDeploy 包 - 例如,包参数可以在文件或 MSBuild 中定义<ItemGroup>。
在 SDK 样式的 webapps(例如 ASP.NET Core webapps)中,使用一个“新的”发布管道,例如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.targetsforPublishProtocol=MSDeploy或.\Microsoft.NET.Sdk.Publish.MSDeployPackage.targetsfor 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>
Run Code Online (Sandbox Code Playgroud)
似乎不支持自定义部署参数。同样,<Target Name="_CreateManifestFiles">目标似乎禁止定制。
WPP(Web Publishing Pipeline - 以前的实现)很笨拙,但是有关于如何自定义它的文章/博客文章。使用 ASP.NET Core,没有提到自定义或扩展部署过程,我可以找到。我确实在 ASP.NET Publishing 上找到了 Channel 9 Video,但它似乎已经过时了 - 它适用于 VS 2017,使用 project.json 和用于部署的 powershell 脚本,而且它似乎已被废弃以支持 MSBuild 目标。
我也确实找到了https://github.com/aspnet/websdk/blob/dev/README.md#microsoftnetsdkpublish,其中记录了可以更改的 msdeploy 设置的几个部分,但我仍然声明不支持用于延长管道。
我将缺乏可用信息解释为“自己解决”,这在处理 MSBuild 和 MSDeploy 时具有挑战性。有没有人成功地为 ASP.NET Core webapps 定制部署管道?
| 归档时间: |
|
| 查看次数: |
536 次 |
| 最近记录: |