【发布时间】:2013-02-22 11:20:24
【问题描述】:
在使用 TFS 之前,我们使用 Visual Studio 在本地构建包。有很多项目被组织成解决方案。当我们想要构建包时,我们只需找到 ccproj 项目,右键单击它并点击“包”。
我们的解决方案中有几个具体的:
- 我们在多个网站和虚拟应用程序中使用 Web 角色,并将它们作为 VS2012 解决方案中的项目依赖项
- 我们对 Web 和辅助角色都使用配置转换。工人角色转换是通过手动将转换目标添加到项目文件来实现的。
- 我们还有一些额外的类库项目——它们的输出需要与正确的配置文件一起放入工作角色的子文件夹中,这是一种插件架构。我们使用一些 xcopy 命令将这些未引用的库包含在我们的工作角色中。
在本地构建 VS 2012 时一切正常。
迁移到 TFS 后,我们很快了解到我们将无法在构建服务器上复制相同的构建过程
- 事实证明,TFS 没有保留解决方案结构,更多 详情在这里: http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/9ac815c8-5961-4670-a6d0-660a9b66da9c
- 解决多个网站的项目依赖和 单一角色的虚拟应用程序无法在构建服务器上运行, 可能是因为输出目录不同。我们不得不添加一些 在我们的 ccproj 和 csproj 文件中进行黑客攻击,以获得这些文件的发布和 正确包含在生成的包中。
- xcopy 命令失败,因为目录结构不同 TFS 构建服务器。
- 我们必须通过显式添加强制在 TFS 构建服务器上运行 cspack /t:将参数发布到 msbuild 命令行。
- 工作角色的配置转换不起作用,我们不得不强制 使用 ccproj 和 csporj 文件中的另一个 hack 会发生。
- 还有更多问题,但这些问题太详细了。我会坚持下去 高水平只是为了说明整个问题。以某种方式构建 现在可以工作了,但我们现在有很多技巧。
我有两个问题:
- 是否可以将 TFS 构建服务器配置为完全相同 作为 VS2012 中的本地构建的行为?
- 是否有任何官方解决方案可以在单个 Web 角色中构建具有多个网站和虚拟应用程序的 Azure 包?
【问题讨论】: