我正在为一个大型企业服务基础架构创建构建和部署基础设施。我们使用 TFS Build 2012 作为构建服务器,使用 Visual Studio 2012 生成 WPP 部署包,并使用 MSDeploy 2.1 执行实际部署。(由于存在一些问题(如:WMSvc 中的 NTLM 认证出现故障等),我们无法使用 MSDeploy 3。)
我创建了一个 "Project.wpp.targets" 文件,并添加了以下属性:
我创建了一个 "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
项目.zip文件中包含以下内容:
Archive.xml
Parameters.xml
systemInfo.xml
问题1 - SourceManifest.xml文件是什么,为什么它不在zip包中? 创建zip文件包进行部署的整个原因似乎是使其完全自包含。但是,SourceManifest文件是“松散的” - 我们不能再简单地将zip文件放在我们的部署文件共享上了。为什么它不在包中?它还指向构建服务器上的特定路径!
问题2 - Archive.xml文件是用于什么的?它似乎有些多余,与SourceManifest.xml类似 - 我看到一个provider、一些providers等等。在Microsoft文档中,他们提到了“manifest.xml”在包中。这个文件看起来像清单,但它被称为“archive.xml”。文件名重要吗?manifest.xml与archive.xml不同吗?它们如何与看起来相似但又不同的SourceManifest.xml相关联?
问题3 - systemInfo.xml是用来做什么的?它似乎列出了构建服务器上安装的所有IIS角色组件。例如,如果我在本地计算机上通过命令行运行构建,它会列出.NET 2.0和4.0已安装以及我的机器上各种IIS组件的True / False值。问题是这些设置对我实际想要部署的内容没有任何影响!MSDeploy会查看此文件吗?它的生成可以禁用吗?我绝对不希望来自构建服务器的配置工件影响生产环境!