13

我们有一个我认为是相当标准的构建过程: 1. 开发人员:签入代码 2. 构建:轮询 repo,查看更改并开始构建:3. 构建:从 repo 更新,使用 MSBuild 构建,运行单元使用 nunit 进行测试,4. 构建:创建安装程序包

我们的安全团队允许我们从构建服务器拉取数据,但不允许构建服务器推送。所以我们通常 rdp in,d/l 安装程序,然后运行它们,这排除了灵活的部署服务,所以我需要生成包。我想使用 MSDeploy,除了我们有以下问题:

  1. 我们在 .net 3.5 上,使用 MSDeploy 的 MSBuild 目标(包)需要 4.0。除了.net 4.0 RC,我还需要安装什么吗?(MSBuild 会成为升级的一部分吗?)
  2. 当我使用 MSDeploy 生成包时,我发现我没有只有 1 个文件。有一个 zip、deploy.cmd、SourceManifest.xml 和 SetParameters.xml。所有其他文件的用途是什么,为什么它们不都在“包”中?
  3. 听起来好像您可以通过告诉系统查看工作中的 IIS 站点来创建包。但是,如果这些包是从 CI 环境构建的,那么您在这里基本上不走运吗?感觉就像他们为从他们的开发环境部署的小规模开发人员设计了其中的一些。这是一个很好的用例,但我很想看看每个人的企业体验如何使用该工具

有什么建议么?

4

1 回答 1

26

如果您的应用程序没有使用 Visual Studio 2010,那么我建议您选择以下选项之一:

  1. 使用 msdeploy.exe
  2. 在您的构建服务器上安装 Visual Studio 2010,然后我们自己执行 MSDeploy 任务

让我再解释一下。

选项1

MSDeploy 本身不依赖于 MSBuild,因此您可以在构建服务器上自行安装它来为您创建包。你可以从这里下载。之后,您可以使用Exec任务创建一个 MSBuild 部署脚本,使用命令调用 msdeploy.exe 来创建您的包。

关于第二个选项

.targets 文件以及 MSDeploy 的任务不是使用 .NET 框架部署的,而是使用 Visual Studio 2010 本身部署的。因此,如果您想利用其中任何一个,您必须在构建服务器上安装 VS 2010。

您在帖子中提到使用 Package目标。您将无法使用它,因为该目标是 .NET 4 项目的更大构建过程的一部分。您可以做的是创建一个单独的 MSBuild 文件(与您的项目文件不同),该文件使用 MSBuild 4 调用随 VS 2010 交付的用于 Web 部署的任务。

在这里我专门回答你的编号列表

  1. 您必须安装 Visual Studio 2010,因为这些任务是随 VS 本身而不是框架一起提供的。
  2. 这些文件用于与您的包进行交互。您的包将您的应用程序作为一个整体呈现。deploy.cmd 将调用 msdeploy.exe 为您执行部署。SourceManifest.xml 和 SetParameters.xml 用于自定义应用程序的部署。deploy.cmd 将在调用 msdeploy.exe 时使用这些文件。换句话说,如果您想自定义安装 Web 应用程序的路径,您可以在 SetParameters.xml 中设置它以及其他选项。
  3. 您的权利设置可以来自 IIS,但许多开发人员更喜欢使用 VS 应用程序服务器而不是 IIS。这是我的偏好。在这种情况下,我建议将您的应用程序部署到您将用作模板的环境中。进行所需的所有 IIS 设置,创建 MSDeploy 包,然后从包中获取 archive.xml 文件,并在创建自己的包时使用该文件。另一种选择是设置您的构建过程可以部署到的 IIS 服务器,然后使用 MSDeploy 来同步构成您的应用程序的文件,然后再次从该 IIS 服务器生成包。
于 2010-04-09T23:41:06.817 回答