4

publish to folder通过右键单击项目-> 发布-> 发布到文件夹来使用 Visual Studio 选项。结果总是准备好复制项目并应用转换。我想使用 VSTS 自动化这个过程,并在 VSTS 上构建。
我使用了接下来的步骤:
- NuGet restore
- Build solution
- Publish Build Artifactsto $(build.artifactstagingdirectory)
- Windows machine file copyfrom $(build.artifactstagingdirectory)to remote machine using admin loginandpassword

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

4

2 回答 2

5

您正在通过文件系统方法发布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)
于 2018-01-08T05:44:37.963 回答
5

在 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 版本管理部署组一起使用,将您的应用程序部署到目标服务器。您可以使用IIS 部署任务使用 ms 部署包部署到 IIS。如果您使用的是 Web 部署包,则可以在 Web 应用程序中使用parameters.xml来获取分配给 .setparameters.xml 的 Web 配置参数,以便您可以使用 IIS 部署任务在部署时更改值。

于 2018-01-05T15:03:09.223 回答