visualstudio 2010-在TFS中添加项目引用将重定向到项目的以前分支版本♦.



我有一个TFS结构,看起来像这样:

$

-主软件分支

-开发

-主

-企业

-项目1

-测试

-团队项目A

-主

-企业

-项目1

-团队项目B

-主

-企业

-项目1

这样做的最终目标是MainSoftwareBranch(MSB)包含我们公司开发的所有软件。当您需要一个软件时,您可以将其分支到您的项目分支,并在必要时添加项目引用。

在过去的某个时候,不太熟悉我们分支策略的人将Project1直接从TeamProjectB分支到TeamProjectA,而不是从MSB分支。我已尝试修复此问题,并从TeamProjectA中引用$/TeamProjectB/Main/Enterprise/Project1的位置删除了该项目引用。我从$/MSB/Main/Enterprise/Project1分支了Project1,并尝试使用"添加现有项目…"将项目添加到解决方案中,然后浏览到csproj文件所在的本地路径。不过,加载的项目是来自$/TeamProjectB的项目。我已经删除了TFS中以及csproj和sln文件中的源代码管理绑定,但没有任何更改。它总是将我打开正确csproj文件的请求"重定向"到无效的旧文件。

有人知道是什么导致了这种奇怪的行为吗?

有几件事需要检查。。。但是,在您进行任何TFS/项目结构修改之前,我建议您签入所有当前更改(针对所有团队),获取最新信息以检索所有这些更改,并备份整个本地工作区文件夹。

有一点我需要澄清才能完全回答你。。。正在分支哪些子文件夹 即,您通常会将MSB/Main分支到TeamProjectA/Main,还是将单个项目(例如MSB/Main/Enterprise/Project1Project2等)分支。?


第一个:;检查您的工作区映射。。。在Visual Studio中,打开源代码管理资源管理器 窗口顶部有一个工作区下拉列表。。。选择"管理工作空间…"并编辑您的主工作空间。

理想情况下,只有一个工作文件夹,将TFS项目的根(在您的情况下为"$")映射到根本地工作文件夹 如果您有多个工作文件夹,请确保第二个不是根目录下的子文件夹 也就是说,$/TeamProjectA/Main/Enterprise/Project1不应该有单独的文件夹 如果你这样做了,删除它并从根目录获取最新信息。

这是我的第一个猜测,因为如果TeamProjectB/Project1映射到TeamProjectA文件夹,那么无论更改引用多少次,都将始终加载Team B的项目。


第二次:您只执行一次分支 之后的一切都在合并,你只能在直系父母和孩子之间合并(除非你跳过重重关卡手动处理合并……在9个国家,这是一种可射击的进攻)。

这意味着,只要Project1是从TeamProjectB分支出来的,你就会一直与TeamProjectB联系在一起。。。您可以为每个团队和项目修复TFS中的引用,但当您将TeamProjectA合并回MSB时,Project1将不会与其他所有内容合并到MSB

我不清楚会发生什么。。。要么该项目没有与任何内容合并,要么它合并回TeamProjectB的文件夹 我非常怀疑后者是真的,但前者也没有多大意义。。。我几乎认为TFS会以某种方式短路。

我猜测(完成WAG),由于您能够将Project1TPB分支到TPA,所以您不会分支/Main/Main/Enterprise。。。我希望答案是TFS不允许您分支到另一个分支的子文件夹。


修复此问题

  1. Project1合并回TPB 办理登机手续。

  2. TPB/Project1合并回MSB 办理登机手续。

  3. 选择TPA/Project1 转至File -> Source Control -> Branching and Merging -> Reparent 选择MSB's Project 1作为新的父对象 如果您的分支是从/Main/Main/Enterprise完成的,则必须从任何分支根进行修复。
    (请注意,如果TPB/Project1不是从MSB派生的,则这将不是一个选项…转到计划"B")

  4. 不确定您是否可以/需要在中检查这些更改…在TPA和MSB上进行检查以确保的安全


计划"B":如果不起作用,则必须删除TPA/Project1并从MSB重新分支。在执行此操作之前,请确保所有内容都已完全合并回MSB(并签入)。

TFS可能会抱怨重新分支到预先存在的目录(因为它保留了TPA/Project1的删除历史记录)。。。我不认为会,但如果会,您将不得不使用命令行工具永久删除TPA/Project1。命令是tf destroy。。。请确保从本地TPA/Project1文件夹运行它,否则tf可能无法解析tfs服务器/路径。


James

项目引用与TFS无关。它们是相对于本地磁盘的引用。

现在,如果您的项目恰好位于本地磁盘上的TFS工作区中,那么您将拥有相对于该工作区的引用。

查看各个.csproj或.vbproj文件内部的引用,看看它们是对什么的引用。我怀疑您会发现您有../../..之类的相对引用/SomeProject.csproj,其中相对路径从工作区向上,然后向下。

相关内容

  • 没有找到相关文章

最新更新