【问题标题】:Precompiling and Deploying website from Visual Studio Team Services从 Visual Studio Team Services 预编译和部署网站
【发布时间】:2016-07-06 07:51:05
【问题描述】:

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

  1. 在 VSO 中构建站点后,预编译并转储 aspx 和 .dll 文件到 git 存储库
  2. 在本地 Web 服务器上,从 git 拉取并移动到我们的暂存站点

第二部分我可以自己弄清楚,但是 VSTeam 的文档似乎粗略地说明了如何将编译的源文件转储到 git。除了Powershell script which is supposed to create artifacts for the drop 之外,我保持默认构建配置与默认配置几乎相同。尽管如此,drop.zip 文件 create 是空的。

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

【问题讨论】:

  • 您是否有一个远程 Git 存储库来存储文件,以便您可以从 Web 服务器拉取文件?

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


【解决方案1】:

您可以使用“复制和发布工件”而不是 PowerShell 脚本,并让它使用您需要的特定位创建一个特定的工件:

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

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

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

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

您也可以选择使用配置目标目录

/p:PackageLocation="$(Build.BinariesDirectory)\Published"

如果这样做,则需要将此目录配置为复制和发布任务中的复制根目录。

【讨论】:

  • 这是我迄今为止最接近的 - 创建目录并复制来自 repo 根目录的 PowerShell 脚本。我在文档中看不到对它的任何引用,但我觉得需要一个额外的部署项目以及网站。
  • 您需要添加几个 msbuild 参数才能在构建中启用打包。
  • 现在编译成功了,但是编译后的文件看不到了。
  • 你能发布 msbuild 日志吗?它应该告诉我们文件被丢弃的位置。
  • 您应该能够在本地执行 MsBuild 命令,而无需 VSTS 参与。如果在那里创建了文件夹,您就可以将其移至 VSTS 并解决可能出现的变量/文件夹问题。基本上你需要先修复 MsBuild 部分。
【解决方案2】:

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

  1. 它仍然使用诸如“$Env:TF_BUILD_SOURCESDIRECTORY”之类的变量,这些变量在 VSTS(VSO) 中不存在。有关 VSTS,请参阅 Variables
  2. 它将文件从“BUILD_SOURCESDIRECTORY”文件夹复制到“BUILD_BINARIESDIRECTORY”。但是定义中的“发布构建工件”步骤会发布“BUILD_ARTIFACTSTAGINGDIRECTORY”文件夹中的文件。

所以如果你想使用这个脚本,你需要更新脚本以删除变量中的“TF_”字符串并更新“Publish Build Artifacts”步骤以发布“BUILD_BINARIESDIRECTORY”文件夹中的文件(设置路径为发布到:$(Build.BinariesDirectory))。

但是,如果您想复制和发布网站文件,您只需在“Visual Studio Build”步骤的“MSBuild Arguments”部分添加一个参数即可:

"/p:outdir=$(build.artifactstagingdirectory)" 

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

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

【讨论】:

  • 谢谢。不幸的是,这似乎没有任何作用。没有复制任何文件。
  • @Echilon 你在构建 Asp.Net Core 项目吗?
  • 不,只是一个标准的 ASP.NET 站点。
  • @Echilon“复制文件”步骤的设置是什么?
  • @Echilon 您可以先尝试以下步骤吗?创建一个新的构建定义,创建构建定义时选择“构建”选项卡下的“Visual Studio”和“部署”选项卡下的“Azure WebApp”。然后删除创建的构建定义中的“Azure 部署”步骤。保存构建定义并将构建排队。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多