visual-studio-2012 – 为构建服务器自定义Visual Studio 2012的Web发布管道(WPP)

我正在为大型企业服务基础架构创建构建和部署基础架构.我们将Build Server用于构建服务器,Visual Studio 2012用于生成WPP部署包,MSDeploy 2.1用于执行实际部署. (我们不能使用MSDeploy 3,因为它有很多错误 – 使用WMSvc等破坏了NTLM身份验证).

我创建了一个“Project.wpp.targets”文件并添加了以下属性:

<DeployOnBuild Condition="$(DeployOnBuild) == '' And '$(OutDir)' != '$(OutputPath)' ">true</DeployOnBuild>
<WebPublishMethod>Package</WebPublishMethod>
<DeployManagedPipelineMode>Integrated</DeployManagedPipelineMode>
<Disable_CopyWebApplication>True</Disable_CopyWebApplication>

当编译在构建服务器上发生时,OutDir将与OutputPath不同,并且将激活WPP.构建输出以下文件:

Project.zip
Project.SetParameters.xml
Project.SourceManifest.xml
Project.deploy.cmd
Project.deploy-readme.txt

project.zip里面是:

Archive.xml
Parameters.xml
systemInfo.xml

问题1 – 什么是SourceManifest.xml文件,为什么它不在zip包中?
似乎为部署创建zip文件包的全部原因是它完全自包含. SourceManifest文件是“松散的” – 我们不能再将zip文件放在我们的部署文件共享上了.为什么不在包中?它还指向构建服务器上的特定路径!

问题2 – 什么是Archive.xml文件?对SourceManifest.xml来说似乎有些多余 – 我看到了一个提供者,一些提供者等.在Microsoft文档中,他们在包中提到了“manifest.xml”.此文件看起来像清单,但它被称为“archive.xml”.文件名是否重要? manifest.xml与archive.xml不同吗?它们如何与SourceManifest.xml相关,它看起来类似但同时又不同?

问题3 – systemInfo.xml是什么?它似乎列出了在构建服务器上为IIS角色安装的所有组件.例如,如果我在本地计算机上运行build at命令行,它会列出已安装.NET 2.0和4.0以及我机器上各种IIS组件的许多True / False值.问题是这些设置与我实际想要部署的内容无关! MSDeploy是否会查看此文件?它可以被禁用吗?我绝对不希望构建服务器的配置工件影响生产!

最佳答案
生成的zip包是自给自足的,可以与msdeploy.exe一起使用,而不需要目录中的任何其他文件.

您可以通过设置GenerateSampleDeployScript = False来阻止生成cmd和SetParameters文件.您无法将BuildManifest配置为在构建后删除,但您可以安全地手动执行.

SourceManifest.xml基本上是一个诊断工件.实际上,它是-source:manifest = Project.SourceManifest.xml到sync的-dest:package = Project.zip

archive.xml是包提供者内部代表的内容.该文件始终称为archive.xml,并且提及manifest.xml的文档是错误的.

我真的不确定如何使用systeminfo.xml.我不知道如何禁用该功能,但我也从未遇到过属性影响部署的情况.

转载注明原文:visual-studio-2012 – 为构建服务器自定义Visual Studio 2012的Web发布管道(WPP) - 代码日志