【问题标题】:MSBuild file for deployment process用于部署过程的 MSBuild 文件
【发布时间】:2009-09-08 13:07:33
【问题描述】:

我可以使用一些指针、代码示例或参考来帮助我在 msbuild 文件中执行以下操作,以帮助加快部署过程..

此方案涉及将开发人员的“本地”版本放到“开发”服务器上。

  1. 增加开发人员本地 Web 应用程序程序集的版本号
  2. 在某处发布开发人员本地 Web 应用程序文件
  3. .rar 将发布的文件或文件夹转换成v[IncrementedAssemblyNumber].rar格式
  4. 将 .rar 复制到某处
  5. 以 Pre_v[IncrementedAssemblyNumber].rar 格式备份 (.rar) 现有直播网站文件夹(位于别处)
  6. 将备份的 .rar 文件移动到 /Backup 文件夹中。
  7. 用已发布的本地 Web 文件覆盖开发 Web 文件

对于所有那些 MSBUILD 大师来说应该很简单。

如我所说,我们将非常感谢您提供答案或“良好且适用”的链接。

我也在考虑购买一本 MSbuild 书籍。据我所知,有 2 个,可能有 3 个竞争者。我没有使用 TFS。任何人都可以推荐一本书来开始 MSBUILD 吗?理想情况下来自阅读过不止一本关于该主题的书籍的人。

干杯,

--李

【问题讨论】:

  • 有点失望,没有人对此有所尝试,或者至少给了我指点。

标签: msbuild build-process build deployment


【解决方案1】:

我认为对于构建部分,您当然应该使用MSBuild。对于部署方面,您可能需要查看Microsoft Web Deployment Tool (MSDeploy)。它支持备份网站(通过 .zip 文件)和更新。我要做的是创建一个将调用 MSDeploy 的 MSBuild 文件。 PowerShell 也是一个很好的驱动程序,它调用 MSDeploy。您可以单独使用 MSBuild 完成相同的任务,但会更加困难。

您的帖子让我感到好奇的是您提到了“开发人员本地网络......”。如果可能的话,您应该有一个构建服务器,它负责创建您的所有产品,这些产品将用于非开发环境。正如有人提到的,一个好的免费 CI 服务器是 CruiseControl.NET

关于书籍你可以看看我的Inside the Microsoft Build Engine:Using MSBuild and Team Foundation Build。如果您不使用 TFS(因此是 Team Build),没关系。 MSBuild 的章节(12 章中有 9 章)独立于 TFS。

【讨论】:

  • 欢呼。我们确实在使用 CCNET。你的书在我的亚马逊生日愿望清单上。这很伤心吗? ——李
【解决方案2】:

-- 编辑:假设您使用的是 .NET ...

使用 NAnt,并使用您称为 MSBuild 的 NAnt Contrib。这将为您提供一个基本系统:)

-- 编辑

当然,您还应该为自己准备一个 CI 服务器,例如 CruiseControl.NET,并将其连接到源代码控制系统,例如 SVN,然后在此基础上进行构建。

【讨论】:

  • 干杯丝滑。我们有CCNET。我会研究你的建议。 ——李
  • FWIW,我也在(正如我们所说的,事实上)一个自动部署系统:mirios.com.au/dashy(目前免费下载)。随意尝试一下(或等待几周,直到我正式将其公开)。
【解决方案3】:

代码不应从开发人员的盒子传送到部署服务器。它应该通过 CI(如 CruiseControl.Net)从源代码控制转到您的部署环境。

  1. 安装 CruiseControl.Net (CC.NET)
  2. 连接 CC.Net 以将源代码控制文件下拉到 CC.NET 机器。使用 CC.NET 任务来执行此操作。有SVN Task、TFS Task等。
  3. 编写一个 msbuild 定义文件 (.proj) 来执行大部分构建逻辑。我把我的文件放在我的 .sln 文件旁边...在源代码管理中。
  4. .proj 文件将构建您的 .sln。
  5. 在 .proj 文件中添加任务以压缩 (rar) 您的构建工件(构建的输出)、发布,无论您想做什么。
  6. 您可以设置一些 CC.NET“发布”任务。大多数情况下,主要是通过电子邮件向一组人发送构建成功/失败的电子邮件。

如果您将大部分构建逻辑放在 .proj 文件中,如果您曾经从 CC.NET 换出到另一个 CI 工具,那么执行此操作的工作量是最小的。使用上述方法,您只需交换源代码控制文件的拉取和少数发布事件(CC.NET 专有任务)。 .proj 文件将传输到其他 CI 工具。我们从 CC.NET 转到了 TFS,因为我有这个远见,所以变化很小。如果我使用 CC.NET 特定任务而不是 .proj,那么转换会很痛苦。

http://mikefourie.github.io/MSBuildExtensionPack/

https://github.com/loresoft/msbuildtasks

有很多额外的功能。大多数 msbuild 需求已经被某个人编码了。

如果迫在眉睫,您始终可以创建自定义 msbuild 任务。但现在这种情况很少见。

有基本的大纲。

【讨论】:

  • Sayed 的回答很好。我只是在讨论中添加一些值得深思的东西。
  • 是的,当时是有原因的。但是现在我们正在使用 TeamCity 和 Octopus Deploy,所以是的
猜你喜欢
  • 2011-03-14
  • 2014-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 2020-07-29
  • 2012-02-21
相关资源
最近更新 更多