1

我无法让 TFS 2012 构建一个 Web 应用程序项目,该项目引用另一个团队项目中的类库项目。

以下是项目在源代码管理中的外观:

- $/
  - TP1
    - Development
      - Source
        - WebAppProject
  - TP2
    - Development
      - Source
        - ClassLibraryProject1

为了这个示例的目的,我简化了这个结构 - 每个团队项目中都有其他解决方案和项目。假设它TP2包含旨在供其他项目使用的代码,而不仅仅是TP1.

包含的解决方案WebAppProject还包含ClassLibraryProject1. 它是TP1使用Add Existing Project 添加的。WebAppProject也有一个项目参考ClassLibraryProject1

我正在构建一个团队构建,该团队构建跨TP1TP2. 我在其中创建了构建定义TP2并设置了以下工作区:

  • $/TP1/Development 构建代理文件夹设置为 $(SourceDir)\TP1\Development
  • $/TP2/Development 构建代理文件夹设置为 $(SourceDir)

TFS can't build WebAppProject,错误实际上是有道理的......

TFS 正在尝试将引用解析为ClassLibraryProject1使用来自的项目引用WebAppProject;eg:..\..\..\TP2\Development\Source\ClassLibrary1但是,该路径显然不会存在于构建服务器上。

有一个更好的方法吗?

谢谢!

4

1 回答 1

1

做到这一点的最佳方法是设置一个工件存储库,例如 NuGet(在规模的复杂端),甚至是通常可访问的网络文件夹(在规模的非常基本端)。

使用单独的构建作业/进程构建共享库并将其输出到工件存储库。

通过工件存储库和一些“获取最新”机制(例如,NuGet 获取,用于 NuGet;xcopy/robocopy 批处理脚本,用于共享网络目录)在使用项目时引用它。

将共享项目直接添加到您的解决方案中很容易导致痛苦,例如,如果有人意外或不知不觉地从您的解决方案中更改了共享项目。

于 2012-12-04T21:53:55.277 回答