4

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

我创建了一个“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 角色安装的所有组件。例如,如果我在本地机器上的命令行运行构建,它会列出已安装的 .NET 2.0 和 4.0 以及我机器上各种 IIS 组件的一些 True/False 值。问题是这些设置与我实际想要部署的内容无关!MSDeploy 是否查看过此文件?可以禁用它的生成吗?我绝对不希望来自构建服务器的配置工件影响生产!

4

1 回答 1

5

生成的 zip 包是自给自足的,可以与 msdeploy.exe 一起使用,而无需目录中的任何其他文件。

您可以通过设置来防止生成cmdSetParameters文件GenerateSampleDeployScript=False。您无法将SourceManifest配置为在构建后删除,但您可以安全地手动执行此操作。

SourceManifest.xml基本上是一个诊断工件。实际上,这是-source:manifest=Project.SourceManifest.xml同步的-dest:package=Project.zip

archive.xml是包提供者对其中内容的内部表示。该文件始终称为archive.xml,并且提到manifest.xml 的文档是错误的。

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

于 2012-12-20T04:24:42.833 回答