0

我有一个包含 3 个项目的 Visual Studio 解决方案。同样的解决方案是有一个文件夹,我在其中添加了属于其他 TFS 团队项目的现有项目。

TeamPrj1
|- Solution1
 |- External Reference(folder)
 |- PrjA (added as existing project) 
 |- Prj1
 |- Prj2
TeamPrj2
|- SolutionA
 |- PrjA

我想为我的解决方案 1 构建 TFS。我面临的问题是解决方案没有在 TFS 构建服务器上编译,因为它找不到 PrjA 的引用。我知道在工作区映射中需要进行一些调整,我也浏览了不同的论坛和博客文章,但仍然无法正常工作。有人说要添加 PrjA dll 作为文件引用,但我不想走那条路,因为如果 PrjA 中的某些变化比 Sol1 需要重新引用最新的 dll 怎么办。作为参考添加后,每次从 TFS 打开解决方案 1 时,它都会自动获取最新的。

目前下面是我的工作区映射。

 Active $/TeamPrj1/Main/Solution1
 $(SourceDir)

 Active $/TeamPrjA/Main/SolutionA
 $(SouceDir)\Main\  
4

3 回答 3

1

由于解决方案需要使用相对路径引用其他项目,因此您需要确保构建定义的工作空间映射实际上产生与本地工作空间相同的文件结构。

从您的文件夹名称来看,您应该使用以下映射:

 Active | $/TeamProj1/Main/Solution1 | $(Sourcedir)\Solution1
 Active | $/TeamProjA/Main/SolutionA | $(Sourcedir)\SolutionA

PrjA.csproj但在我们知道定义为in的相对路径之前,我无法确定确切的目标路径Solution1.sln

您可能还需要在 Build Definition 编辑器的 Process 选项卡中更新解决方案的路径。

于 2013-02-02T03:58:08.833 回答
0

如果您有一个 Visual Studio 项目,例如一个包含多个团队项目使用的共享库代码的团队项目,

  • 您可以在拥有团队的项目中管理项目,也可以专门为共享项目创建单独的团队项目。

  • 如果您选择后一种方法并使用公共共享项目,
    Microsoft Visual Studio Team Foundation
    Server (TFS) 源代码管理中的文件夹结构如下所示

在此处输入图像描述

有关更多信息,请参阅以下内容:

第 6 章 - 在 Visual Studio Team System 中管理源代码管理依赖项

于 2013-02-02T02:27:57.270 回答
0

我想最好的选择是拥有一个企业 NuGet 服务器并在内部发布这个 NuGet 站点的包。

对于不同 Team Projects 下的 Visual Studio 解决方案,他们可以轻松 NuGet 进行引用。TFS 自动构建还可以轻松恢复任何解决方案的 NuGet 包。

您还可以使用自动化构建将 NuGet 包拖放到 NuGet 服务器,以获取在多个 TeamProject 和 Team Collections 中也很常见的程序集/exe。(构建模板中的 xcopy 命令)。

使用这种方法的最大好处:一切都是自动化的。无需进行任何手动合并和签入。可以跨多个 TeamProject 和 TeamCollections 使用。如果父公共 dll 发生变化,它的自动构建可以将其推送到 NuGet 服务器。下次通过 NuGet 使用公共 dll 的所有其他项目将始终拥有最新的,因为在构建服务器上它将始终从 NuGet 下载最新的(假设您保持版本#相同)。

于 2013-02-13T14:09:07.003 回答