从Visual Studio Team Services预编译和部署网站

时间:2016-07-06 07:51:05

标签: asp.net powershell tfs azure-devops precompiled

我们使用Visual Studio Team Services和Git作为源代码控制系统,并且我已经配置了一个在线成功执行的构建。理想情况下,我想:

  1. 在VSO中构建站点后,预编译并将aspx和.dll文件转储到git存储库
  2. 在内部部署Web服务器上,从git中拉出并移至我们的临时站点
  3. 第二部分我可以自己弄清楚,但VSTeam的文档似乎很粗略,如何将已编译的源转储到git。我保留默认构建配置几乎与默认配置相同,但Powershell script which is supposed to create artifacts for the drop除外。尽管如此,drop.zip文件创建为空。

    以下是我在VSO中设置构建定义的方法。

    VSO Build Definition

2 个答案:

答案 0 :(得分:3)

您可以使用“复制和发布工件”代替PowerShell脚本,并使用您需要的特定位创建特定的人工制品:

enter image description here

这将自动创建一个命名的构建工件,然后您可以从Release Management中将其用作输入。

当与“项目输出|按配置”选项一起使用时,PowerShell脚本在XAML构建中使用。

要创建“打包”网站,您需要在MsBuild / Visual Studio Build步骤中添加几个参数,以限制编译器打包您的网站:

/p:DeployOnBuild=true /p:DeployTarget=Package 
/p:SkipInvalidConfigurations=true /p:PackageAsSingleFile=false
/p:AspNetCompileMerge=true

您也可以选择使用

配置目标目录
/p:PackageLocation="$(Build.BinariesDirectory)\Published"

如果执行此操作,则需要在复制和发布任务中将此目录配置为复制根目录。

答案 1 :(得分:1)

我快速浏览了Power-Shell脚本,它有两个问题:

  1. 它仍然使用" $ Env:TF_BUILD_SOURCESDIRECTORY"等变量。在VSTS(VSO)中不存在。有关VSTS,请参阅Variables
  2. 它复制" BUILD_SOURCESDIRECTORY"文件夹到" BUILD_BINARIESDIRECTORY"。但是" Publish Build Artifacts"在您的定义中的步骤发布" BUILD_ARTIFACTSTAGINGDIRECTORY"文件夹中。
  3. 因此,如果您想使用此脚本,则需要更新脚本以删除" TF _"变量中的字符串并更新"发布构建工件"步骤将文件发布在" BUILD_BINARIESDIRECTORY"文件夹(设置发布到的路径:$(Build.BinariesDirectory))。

    但是,如果要复制和发布网站文件,只需在" MSBuild Arguments"中添加一个参数。 " Visual Studio Build"步骤:

    chrome.storage.local.get

    删除Power-Shell脚本步骤,其他步骤只保留默认设置。

    或者您也可以更改"复制文件"的设置。选择您要复制的文件/文件夹的步骤。