msbuild - 让 MSDeploy 在我们的构建/集成服务器上工作 - 是否需要升级 MSBuild?

标签 msbuild continuous-integration msdeploy

我们有一个我认为是相当标准的构建过程:
1. 开发者: checkin 代码
2. 构建:轮询 repo,查看变化,并开始构建:
3. 构建:来自 repo 的更新,使用 MSBuild 构建,使用 nunit 运行单元测试,
4. Build:创建安装包

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

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

    有什么建议么?

    最佳答案

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

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

  • 让我再解释一下。

    选项 1

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

    关于第二个选项

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

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

    在这里我专门回答你的编号列表
  • 您必须安装 Visual Studio 2010,因为这些任务是随 VS 本身而不是框架一起提供的。
  • 这些文件用于与您的包进行交互。您的包将您的应用程序作为一个整体呈现。 deploy.cmd 将调用 msdeploy.exe 为您执行部署。 SourceManifest.xml 和 SetParameters.xml 用于自定义应用程序的部署。 deploy.cmd 将在调用 msdeploy.exe 时使用这些文件。换句话说,如果您想自定义安装 Web 应用程序的路径,您可以在 SetParameters.xml 中设置它以及其他选项。
  • 您的权利设置可以来自 IIS,但许多开发人员更喜欢使用 VS 应用程序服务器而不是 IIS。这是我的偏好。在这种情况下,我建议将您的应用程序部署到您将用作模板的环境中。进行所需的所有 IIS 设置,创建 MSDeploy 包,然后从包中获取 archive.xml 文件,并在创建自己的包时使用该文件。另一种选择是设置您的构建过程可以部署到的 IIS 服务器,然后使用 MSDeploy 来同步构成您的应用程序的文件,然后再次从该 IIS 服务器生成包。
  • 关于msbuild - 让 MSDeploy 在我们的构建/集成服务器上工作 - 是否需要升级 MSBuild?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2608594/

    相关文章:

    teamcity - 使用 TeamCity 设置 Orchard 项目的部署

    asp.net - 在构建管道期间覆盖发布配置文件的发布文件夹(url)

    tfs - 尝试使用 TFS 服务时出现 NuGet 包丢失错误

    c# - CS1607 : Assembly generation -- The version '1.4.0.85725' specified for the 'file version' is not in the normal 'major.minor.build.revision' format

    continuous-integration - 针对特定版本测试 ansible playbook 是否已弃用的语法

    unit-testing - 如何集成/单元测试软件硬件接口(interface)

    visual-studio-2013 - ExcludeFilesFromDeployment 在 Visual Studio 2013 Publish Web 中不起作用

    asp.net - 如何将文件复制到主目录并部署

    tfs - TFS 构建中的错误 CS0234 : The type or namespace name 'Azure' does not exist in the namespace 'Microsoft' (are you missing an assembly reference?)

    continuous-integration - 与 .net 和 svn 的持续集成