使用 VSTS 设置发布到文件夹

Setup publish to folder using VSTS

我通过 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 中相同的 "publish to folder" 但使用 VSTS?

将以下目标添加到您的 .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 部署包以及 xcopy 部署发布的网站文件。

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

在您的 Web 应用程序中使用 VSTS release management with deployment groups to deploy your application to target server. You can use IIS deploy task to deploy to IIS using ms deploy package. If you are using web deploy package you can use a parameters.xml 获取分配给 .setparameters.xml 的 Web 配置参数,以便您可以使用 IIS 部署任务更改部署时的值。

您是通过文件系统方式发布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))