【问题标题】:Setup publish to folder using VSTS使用 VSTS 设置发布到文件夹
【发布时间】:2018-01-05 14:23:46
【问题描述】:

我通过 Visual Studio 使用 publish to folder 选项,方法是右键单击项目 -> 发布 -> 发布到文件夹。结果总是准备好复制项目并应用转换。 我想使用 VSTS 自动执行此过程,并在 VSTS 上进行设置。
我使用了后续步骤:
- NuGet restore
- Build solution
- Publish Build Artifacts$(build.artifactstagingdirectory)
- Windows machine file copy$(build.artifactstagingdirectory) 到远程机器使用 admin loginpassword

最后,我在具有复杂文件夹结构的远程机器上获得了 zip 包,而内部根本没有应用转换。
怎么了?如何设置与 Visual Studio 中相同但使用 VSTS 的“发布到文件夹”?

【问题讨论】:

  • 你解决了这个问题吗?

标签: azure-devops azure-pipelines continuous-delivery web-publishing one-click-web-publishing


【解决方案1】:

将 Target 下面添加到您的 .csproj 以启用转换配置文件

<Target Name="TransformConfigFiles" AfterTargets="AfterBuild" Condition="'$(TransformConfigFiles)'=='true'">
<ItemGroup>
  <DeleteAfterBuild Include="$(WebProjectOutputDir)\Web.*.config" />
</ItemGroup>
<TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="$(WebProjectOutputDir)\Web.config" />
<Delete Files="@(DeleteAfterBuild)" /></Target>

在您的构建解决方案步骤中添加以下构建参数“/p:TransformConfigFiles=true”将使用上面添加的目标对.csproj进行配置转换

/p:TransformConfigFiles=true /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:OutDir="$(build.stagingDirectory)"

然后您可以使用发布步骤来发布您的 $(build.stagingDirectory) 内容。如果您只需要网站输出,则可以使用 $(build.stagingDirectory)_PublishedWebsites 作为发布路径。

这将允许您获取 ms deploy 包以及 xcopy deploy 发布的网站文件。

如果您对 $(build.stagingDirectory) 有任何附加文件,您可以在发布任务之前使用复制文件任务复制任何其他文件,并将它们作为构建工件发布。

使用VSTS release managementdeployment groups 将您的应用程序部署到目标服务器。您可以使用 IIS deploy task 使用 ms deploy 包部署到 IIS。如果您使用的是 Web 部署包,您可以在您的 Web 应用程序中使用 parameters.xml 来获取分配给 .setparameters.xml 的 Web 配置参数,以便您可以使用 IIS 部署任务在部署时更改值。

【讨论】:

  • 谢谢!刚刚检查了 _PublishedWebsites 文件夹,并且有一个没有应用转换的 Web.config 文件。如何强制转型?
  • 这可能已经解决了 OP 问题,但是这样 '/p:WebPublishMethod=Package /p:PackageAsSingleFile=true' 你最终会得到一个 '.zip' 而不是 VS 发布到的默认行为文件夹,这是通过@starian chen-MSFT 回答实现的。该答案应该是标记为已解决的答案,因为它实际上回答了 OP 问题。
【解决方案2】:

您通过文件系统方法发布Web应用程序,它是根据指定的配置(例如Debug,Release)来转换web.config。因此,您需要检查您在构建解决方案任务中指定的配置(例如 Visual Studio 构建任务)

简单的任务:

  1. NuGet 工具安装程序任务
  2. NuGet 恢复任务
  3. Visual Studio 构建任务(MSBuild 参数:/p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\" /p:DeployDefaultTarget=WebPublish;平台:$(BuildPlatform);配置:$(BuildConfiguration))注意:BuildPlatformBuildConfiguration 是构建变量。它将 Web 应用发布到工件目录([代理工作文件夹]/1/a)
  4. 发布构建工件(发布路径:$(build.artifactstagingdirectory)

【讨论】:

  • 这给出了 VS 发布到文件夹的预期输出,其中所有内容都已解压缩,这与 @ChamindaC 方法不同。它对我有用,并且“挽救了我的生命”,因为我在接下来的步骤中需要解压缩的输出。谢谢。
  • 我缺少 /p:DeployDefaultTarget=WebPublish,我需要它和 /p:WebPublishMethod=FileSystem 来复制文件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 2018-10-26
  • 2018-08-03
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多