如何在TFS中重新绑定我的项目?

12
尝试将一个新机器重新附加到我的项目依赖项,目前的障碍是TFS绑定。我看到了这个:

enter image description here

当我选择文件|源代码控制|更改源代码控制时,但单元格中的值是只读的。当我点击"绑定"按钮时,会出现"找不到解决方案的映射" 的提示。是的,我知道,这就是为什么我想要重新绑定它们的原因。怎么做?

更新

选择文件|源代码控制|工作区,我可以得到一个工作区列表(但只有在我选中"显示远程工作区"复选框后),我目前感兴趣的那个看起来很好:

enter image description here

...那么这有什么问题呢?我假设"$\tlog"与远程源相连;而我的本地机器上的源就是"local"单元格所指示的位置,那么...问题出在哪里呢?为什么它不让我重新将它们配对?

更新2

重新启动后,我收到了“关联的源控制插件未安装或无法初始化的消息。此错误的常见原因包括服务器不可用和/或工作区映射不正确。” 根据这里的答案:如何让Visual Studio Team Foundation Server看到我将代码移动到了另一个文件夹?,我允许它“永久解除绑定”。但是当我查看工作空间时,设置与以前完全相同:连接与之前完全相同(确实,它们不起作用,但我认为永久解除绑定会将它们从工作空间中删除)。

更新3

重新启动Visual Studio后,绑定似乎已被切断-没有更多的错误消息。然而,它们仍然显示为在工作空间中连接着!?!

更新4

我现在可以编辑“更改”对话框,但尽管连接似乎准确,它告诉我状态无效:

enter image description here

我知道本地路径是正确的,而且我对服务器路径无能为力(据我所知),所以为什么它是无效的?真是爱这种“高效率”软件。

更新5

我试过了。我从“GlobalSection(TeamFoundationVersionControl)”部分中删除了所有内容,选择文件| 源代码控制| 更改源代码控制…,然后选择解决方案中第一个项目突出显示,选择“绑定”按钮。 它从这个转变:

enter image description here

在按下“绑定”按钮后,将出现以下内容:

enter image description here

我的意思是,在Mudville还没有喜悦(Casey已经被判出局)。它显示已经连接,但是连接无效。如果能说明原因那就太好了 - 它的无效之处在哪里?给我一个提示,TFS!

更新6

嗯,我有一点进展,成功绑定了一些项目:

enter image description here

然而,还有九个项目仍无法运行。我尝试通过修改.sln文件来修复这些绑定。如前所述,解决方案中的九个项目状态为"Invalid",其余的项目(超过两倍)为"Valid"。

因此,我将有效项目与无效项目进行了比较,并发现所有"invalid"都有额外路径描述,例如"../../"和"..\"等。因此,我删除了所有这些内容,替换了.sln文件,但是......什么也没发生。无效项目仍然无效。

然后,我采取了DaveShaw在这里提出的"全面重置"建议:TFS问题:Solution没有源控件选项(获取最新版本、签出、签入)

......但仍然不起作用-没有任何变化;有效项目仍然有效,无效项目仍然无效。

我可以在TFS上浪费这么多时间,写完整个代码了!

其实不是这样,但仍然让人相当沮丧。

更新7

请参见http://social.msdn.microsoft.com/Forums/vstudio/en-US/08d3e956-62a8-4874-8468-f178d12ac67c/why-is-the-requested-url-and-physical-path-the-browser-is-trying-to-use-different-from-the-actual?prof=required,了解更多我尝试过什么以及发生了什么。

更新8

在我看来,TFS应该允许您提供一个本地文件夹结构,或者更好的方法是只提供“起始点”而没有子文件夹,然后TFS会根据存储库的结构填充文件夹结构,并使用最新的代码填充它。

如果这就是它的工作方式,或者可以工作...太好了!但我还没有找到如何做到这一点...

更新9

这是我认为的正确操作方式:
1)在Windows资源管理器中,您创建一个本地文件夹,并为其命名以适应您的解决方案
2)打开Visual Studio,并在Visual Studio启动页面上选择“连接到TFS”
3)选择“文件”|“源代码控制”|“工作区…”|“编辑…”
4)在“编辑工作区”对话框的“工作文件夹”部分中的记录/行上,单击“本地文件夹”条目以便能够编辑它
5)点击省略号按钮以弹出文件夹对话框。
6)然后选择您在步骤1中创建的文件夹,然后点击“确定”按钮。
现在,“工作文件夹:”部分中有一个记录看起来像这样:
Status  Source Control Folder   Local Folder
=====   ==================  ==========
Active  $/Whatever      C:\Whatever

7) 您现在点击“确定”按钮。

注意:当我这样做时,会出现一个对话框,上面写着:

“工作空间已修改 版本控制中的一个或多个工作文件夹已更改。您是否要从版本控制获取最新文件以更新本地工作区?”

我点击了“是”,然后看到了:

“正在获取进度 C:\Whatever\\\...”

...... 进度条不断更新的文本似乎表明它正在执行我期望的操作(将存储库文件复制到本地文件夹中,根据需要创建子文件夹)。

8) 在“编辑工作区”对话框上点击“关闭”按钮。

9) 然后在 Visual Studio 启动页上选择“打开项目...”,并导航到 C:\Whatever。

10) 阳光照耀,蓝鸟开始唱歌,在中距离的水中,海豚开始跳起来,展示了一场精心编排的愉悦表演。

然而,在我的情况下,Windows资源管理器显示我想要的对象(Whatever.sln)在两个本地文件夹中找到,但单击这些文件夹并未显示任何Such文件。有一个,但它不在Windows资源管理器所说的位置...它在下面的另一个文件夹中。当我选择该项目进行打开时,我会收到以下提示:

"Web项目目前配置为使用URL'http://localhost/<different one>'。Web服务器将此URL映射到不同的文件夹'C:\Project\ccr\TLog\Development\Development\Externals\CommonLogin.' 你想重新映射此URL以指向此Web项目的文件夹吗?"

我选择“是”

我为另一个项目收到相同的信息,然后再次选择“Yes”按钮。

该项目正在加载。它似乎是解决方案中正确的项目集合。

也许这次真的成功了(勉强算)。我的意思是说,当我编译解决方案时,Visual Studio告诉我有11251个错误…也许这是添加引用和其他内容的问题。我确实得到了这个:"解决方案中有一个或多个项目未能正确加载。有关详细信息,请参见“输出”窗口。"

无论如何,芦苇已经从湖中枯萎,没有鸟儿唱歌,而不是沐浴在阳光下聆听幸福的蓝鸟。

更新10

我最终通过遵循Jason Williams的答案使它工作了;然而,由于破损的引用,我仍然有11,257个错误消息。有没有自动修复这些问题的方法,或者必须一个一个地解决它们(我知道有些将修复多个错误消息,但仍然...)

更新11

以下是前萨克拉门托国王队球员在他的回答后面评论中所说的“获取特定版本”的内容:

enter image description here


1
试试我的答案在这里:https://dev59.com/SHTYa4cB1Zd3GeqPpwnv - DaveShaw
对我没用。我正在使用具体信息进行更新(更新5显示我看到的内容)。 - B. Clay Shannon-B. Crow Raven
2个回答

10
你的第9步基本正确,你可以跳过第1步。
然而,在第5步中要注意不要使用映射创建一个双重文件夹(例如,如果你有一个名为 $ / Whatever 的 TeamProject,并且它有一个名为 Whatever 的根文件夹,那么实际上你会得到一个路径 $ / Whatever / Whatever,或者你可以将 $ / 映射到 D:\ Code \ Whatever - 无论哪种方式,你可能最终会得到 D:\ Code \ Whatever \ Whatever)。这可能不是问题,但如果你所使用的源代码创建者没有考虑使用相对路径引用来使其可重定位,那么你需要确保它最终在正确的绝对路径下,否则可能无法正确编译。
一旦创建了工作区,它会询问(第7步)是否希望使用更改更新工作区。这是正确的计划,但我不会相信它-TFS 记住了它认为你在每个文件夹的工作区中有什么,因此,如果它在过去的任何时间点被混淆了,它可能会决定你已经有了其中部分源代码,而不会更新它们。因此,在此步骤上,为了保险起见,选择“否”,然后手动转到源代码资源管理器,右键单击根文件夹并执行“获取特定版本”。然后选中两个复选框,使其获取所有文件(即使它认为你已经拥有它们)并强制覆盖所有内容(即使是可写文件),这样就可以确保获得完整的源代码副本。
在第9步中,你需要从映射的工作区(本地驱动器)打开一个解决方案。转到“文件”>“源代码控制”>“更改源代码控制”,并检查该解决方案是否已绑定。如果没有,请选择全部内容并单击“绑定”。这是修复一切的神奇按钮,但宇宙中没有人理解这个用户界面为什么存在,为什么它如此复杂,以及为什么对话框上的其他选项从未用于任何事情。绑定所做的一切就是写下你在本地磁盘上拥有解决方案的位置,所以你会感到空虚,并留下一个想法的线索,即如果你正在使用来自源代码控制内部的东西,并且处于“在线”模式下,则应该自动发生而不必进行这种毫无意义的对话框操作。
这个绑定过程应该意味着你现在所做的任何编辑都将自动导致受影响的文件被签出。(如果这不起作用,请检查“工具”>“选项”>“源代码控制”,确保你有合理的设置)
现在,如果编译时出现错误,则可能是以下原因之一:
- 服务器上的代码无法构建。例如,某人忘记了检入所有依赖项等。 - 服务器上的代码很好,但是你将其映射到了PC上的不同位置,而原始作者没有使其可重定位。如果是这样,最快的修复方法是找出他的映射方式并在自己的映射中完全复制它(提示:你可以在工作区编辑器中查看其他人的映射,并将它们复制粘贴到自己的映射中)。真正的解决方案当然是追踪每个破碎(绝对)文件引用并将其变为相对
$/TLog  -> C:\Project\ccr\TLog

与其

$/TLog -> C:\TLog

1
非常感谢你花费的时间、提供的信息以及确认TFS是一个邪恶且臭气熏天的野兽。 - B. Clay Shannon-B. Crow Raven
1
对我来说,TFS就像其他版本控制系统一样,其用户界面非常糟糕,看似简单或明显的操作如果你不确切知道自己在做什么,就会让你陷入麻烦。总有一天,有人会意识到我们只需要目前功能的20%和500%的用户界面支持,这个世界将变得更美好。 - Jason Williams
同意;我曾使用过CVS、VSS、Tortoise/Subervsion,现在使用的是TFS(也许还有一两个我暂时忘记了),但我并不太喜欢它们。 - B. Clay Shannon-B. Crow Raven
“手动进入源代码控制资源管理器,右键单击根文件夹并执行“获取特定版本””,您是指说的是“编辑工作区<计算机名称>”对话框吗?在那里右键单击没有给我“获取特定版本”的选项...还是您指的是“从源代码控制打开”对话框?即使是在这种情况下,突出显示和右键单击也没有给我任何这样的上下文菜单选项... - B. Clay Shannon-B. Crow Raven
请到“源代码控制资源管理器”视图(可从团队资源管理器或“视图”主菜单项中获取),然后右键单击您想要获取的源代码控制文件夹(或整个团队项目)。在上下文菜单中,您将找到一个“获取特定版本”的选项(该选项在菜单中的确切位置取决于您使用的Visual Studio版本)。 - Jason Williams
哦,我明白了 - 你必须双击<TFS团队项目名称> |源代码控制。为什么微软要将这个功能隐藏在按下老鼠和猪的洞里呢? - B. Clay Shannon-B. Crow Raven

1

这个问题已经有一个很好的答案了,但我想分享我的步骤,因为它们可能会有帮助:

  1. 检查你当前的 Workspaces,在我的情况下,我有两个,这是导致问题的原因(图片仅供参考,因为我是在解决后才拍的) enter image description here

  2. 由于我不需要任何一个工作区,所以我使用上一步出现的窗口将它们删除,注意不要删除其他可能需要的工作区

  3. 然后你需要像第一次连接 TFS 一样连接它,当这发生时,VS 将要求对工作区进行映射(服务器到本地路径),然后我点击了 MAP & GET

  4. 在所有源代码下载完成后打开该解决方案,它会问是否将其绑定到服务器,并点击“是”

问题得到解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接