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

Jef*_*f D 13 msbuild continuous-integration msdeploy

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

我们的安全团队允许我们从构建服务器中提取,但不允许构建服务器推送.因此,我们通常会对安装程序进行操作,然后运行它们,这将排除光滑的部署服务,因此我需要生成软件包.我想使用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环境构建的,那么你在这里基本上没有运气吗?感觉就像他们为从开发环境部署的小规模开发人员设计了一些.这是一个很好的用例,但我很想知道每个人的企业体验是什么

有什么建议?

Say*_*imi 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 for Web Deployment提供的任务.

在这里,我特别回答你的编号清单

  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服务器生成程序包.