12

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

在此处输入图像描述

...当我选择文件 | 源代码管理 | 更改源代码控制...,但单元格中的值是只读的。当我捣碎“绑定”按钮时,我被骂“找不到解决方案的映射”。是的,我知道,这就是我想重新绑定它们的原因。如何?

更新

选择文件 | 源代码管理 | 工作区,我得到一个工作区列表(但只有在我选择“显示远程工作区”复选框之后),我目前感兴趣的那个对我来说看起来不错:

在此处输入图像描述

……那这有什么问题?我假设“$\tlog”连接到远程源;我本地机器上的源“本地”单元格所指示的位置,所以......有什么问题?为什么不让我把这对重新介绍给对方?

更新 2

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

更新 3

再次重新启动 Visual Studio,绑定似乎已被切断 - 不再有错误消息。但是,它们仍然显示为在工作区中连接!?!

更新 4

我现在可以编辑“更改”对话框,但即使连接看起来准确,它也告诉我状态无效:

在此处输入图像描述

我知道本地路径是正确的,我不能对服务器路径做任何事情(AFAIK)(我确信它没有改变),那么为什么它无效?一定会喜欢这个“生产力”软件。

更新 5

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

在此处输入图像描述

...在捣碎“绑定”按钮后:

在此处输入图像描述

IOW,在 Mudville 仍然没有欢乐(凯西已经三振出局)。它说它已连接,但它是无效的。如果它能解释为什么会很好 - 它有什么无效的?给我一个线索,TFS!

更新 6

好吧,我确实走得更远,并获得了一些要绑定的项目:

在此处输入图像描述

然而九个仍然顽固不化。我试图通过更改 .sln 文件来修复这些绑定。如前所述,解决方案中的九个项目的状态为“无效”,其余(超过两倍)为“有效”

因此,我将有效与 in- 进行了比较,我发现所有“无效”都有额外的路径“描述”,例如“../../”和“..\”等。所以,我删除了所有这些出来,用那个替换.sln,然后......什么都没有。无效者保持无效。

然后我在这里采用了 DaveShaw 建议的“核选项”:TFS 问题:解决方案没有源代码控制选项(获取最新、签出、签入)

...但仍然不行——没有变化;有效的仍然有效,无效的仍然无效。

我本可以在 TFS 胡说八道的时候重写所有代码!

不是真的,但它仍然非常令人沮丧。

更新 7

有关我尝试过的内容和正在发生的事情的更多细节,请参阅http://social.msdn.microsoft.com/Forums/vstudio/en-US/08d3e956-62a8-4874-8468-f178d12ac67c/why-is-请求的 url 和物理路径浏览器正在尝试使用与实际不同的?prof = 必需

更新 8

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

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

更新 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)你现在捣碎这个“确定”按钮

注意:当我这样做时,我得到一个对话框,上面写着:

“Workspace Modified 版本控制中的一个或多个工作文件夹已更改。您想从版本控制中获取最新文件以更新您的本地工作区吗?”

我捣碎了“是”并看到:

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

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

8)您在“编辑工作区”对话框中混合“关闭”按钮

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

10)太阳出来了,蓝鸟开始歌唱,海豚开始在中距离跳出水面,精心编排的喜悦表演。

但是,在我的情况下,Windows 资源管理器说我想要的对象(Whatever.sln)在两个本地文件夹中找到,但单击这些文件夹显示没有这样的文件。有一个,但它不是 Windows 资源管理器所说的位置……它是下面的另一个文件夹。当我选择要打开的项目时,我得到:

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

我说是”

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

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

也许这次真的奏效(在时尚之后)。我的意思是,当我编译解决方案时,Visual Studio 告诉我有 11251 错误......也许这是添加引用之类的问题。我确实得到了这个:“解决方案中的一个或多个项目未正确加载。有关详细信息,请参阅输出窗口。”

好歹不是晒着太阳听着幸福的青鸟,湖边的莎草已经枯萎,没有鸟儿歌唱。

更新 10

通过遵循 Jason Williams 的回答,我终于让它工作了;但是,由于引用损坏,我仍然有 11,257 条错误消息。有没有办法自动化修复这些的过程,或者我必须一次通过它们一个程序集(我知道有些会修复超过 1 个错误消息,但仍然......)

更新 11

以下是前萨克拉门托国王所说的关于:“获取特定版本”(请参阅​​他的回答后的评论):

在此处输入图像描述

4

2 回答 2

10

您的更新 9 听起来基本正确。您可以跳过第 1 步。

但是,听起来在第 5 步中注意不要使用映射创建双文件夹(例如,如果您有一个名为 $/Whatever 的 TeamProject 并且它有一个名为 Whatever 的根文件夹,那么您实际上有一个路径 $/不管/随便,或者您可以将 $/ 映射到 D:\Code\Whatever - 无论哪种方式,您最终都可能得到 D:\Code\Whatever\Whatever)。这可能不是问题,但是创建您的源代码的人可能没有考虑通过使用相对路径引用使其可重定位,在这种情况下,您可能需要确保它以正确的绝对路径结束,或者它可能不会正确编译。

创建工作区后,它会询问(第 7 步)您是否希望使用更改来更新工作区。这是正确的计划,但我不相信它 - TFS 会记住它认为你在工作区的每个文件夹中拥有的内容,因此如果它对你过去做过的任何事情感到困惑,它可能会决定你有一些源代码已经和不更新它。因此,要在这一步中防弹,请单击“否”,然后手动转到源代码管理资源管理器,右键单击根文件夹并执行“获取特定版本”。然后勾选两个复选框以使其获取所有文件(即使它认为您拥有它们)并强制覆盖所有内容(甚至是可写文件),您将确保获得源代码的完整副本。

在 (9) 处,您需要从映射的工作区(本地驱动器)打开解决方案。转到文件 > 源代码管理 > 更改源代码管理并检查解决方案是否已绑定。如果没有,请选择所有内容并单击绑定。这是修复一切的神奇按钮,宇宙中没有人理解这个用户界面,为什么它在那里,为什么它如此复杂,以及为什么对话框上的其他选项在它们从未用于任何事情时都不存在。绑定所做的只是写下您在本地磁盘上获得解决方案的位置,这样您就会感到空虚,并暗示这应该可以正常工作,而不必在使如果您使用源代码控制中的某些内容并且您处于“

此绑定过程应该意味着您现在所做的任何编辑都会导致受影响的文件被自动签出。(如果没有发生这种情况,请检查工具 > 选项 > 源代码管理以确保您的设置正常)

现在,如果您在编译时遇到错误,可能的嫌疑人将是:

  • 服务器上的代码没有构建。例如,有人忘记检查所有依赖项等。
  • 服务器上的代码很好,但是您将其映射到 PC 上与原始作者不同的位置(例如,您使用 D:\ 而他使用 C:),并且他没有使其可重定位。如果是这样,最快的解决方法是找出他的映射是如何工作的,并在您的 PC 上完全复制它(提示:您可以在工作区编辑器中查看其他人的映射并将它们复制并粘贴到您自己的映射中)。真正的解决方案当然是追踪每个损坏的(绝对)文件引用并使其相关以使解决方案可重定位。
  • 服务器上的代码很好,但是您的工作区映射与您设置 Web 服务器的方式不匹配,然后当 Visual Studio 注意到两者不匹配时,您单击“是”(不知道它的意思是“是的,请为我搞砸一切”)而不是“不”(“我的源代码控制映射一定有错误,我想我会先回去仔细检查一下,谢谢”)。在这种情况下,请仔细检查您的源代码控制映射是否会将代码放在 Web 服务器认为会找到它的位置,并且(在删除该批次、修复映射并执行获取特定版本以强制 TFS 获取干净的副本放在正确的位置)可能你的很多问题都会消失。
  • 服务器上的代码很好,但是 Visual Studio 糟糕的参考系统破坏了一些参考。本质上,如果它无法在您告诉它查看的确切位置找到引用的程序集,而不是说“错误:它不存在”,而是通过您的 PC 进行发现之旅,并选择具有相似名称的其他东西并说“应该这样做”。在一小部分情况下 (99%) 完全搞砸了,而在剩下的 1% 情况下则完全破坏了它们。查看错误列表的位置通常位于底部 - 最后一个错误通常是失败的引用,而前面的 1000 个错误只是副作用。此外,检查每个项目的参考资料中是否有黄色感叹号图标——这些是缺少的参考资料。最后,如果您引用了导致莫名其妙的构建错误的 MyAssembly.dll 或“MyAssembly”项目,请在硬盘驱动器中搜索“MyAssembly.dll”。当您在整个构建项目中发现该 dll 的 3,245 个副本时,删除除“正确”之外的所有副本,然后查看您的构建成功率是否有所提高。除此之外,您只需阅读错误并一一解决。

恐怕要从这么远的地方得到一个准确的答案并不容易,但希望这至少能证实你的基本想法是正确的,也许会给你一些线索来帮助你诊断你的痛苦。我的钱会花在工作区映射上,它与魔法设置略有不同,它需要让所有东西都点击到位,让你惊呆了,想知道为什么你只需要花 3 天时间来解决这样一个噩梦般的问题只是发现你从来没有超过 3 个字符和一个斜线远离迷宫的中心。

根据您第 9 步中的线索,可能类似于

$/TLog  -> C:\Project\ccr\TLog

而不是

$/TLog -> C:\TLog
于 2013-07-09T22:34:33.043 回答
1

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

  1. 检查您的当前Workspaces,在我的情况下,我有两个,这导致了我的问题(图像仅供参考,因为我在解决它后拿走了它) 在此处输入图像描述

  2. 由于我不需要两个工作区中的任何一个,因此我使用上一步中出现的窗口删除了它们,请注意不要删除您可能需要的其他工作区

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

  4. 在所有源代码的 GET 完成后打开解决方案并询问我是否要将其绑定到服务器并单击“是”

这解决了问题

于 2020-04-20T20:11:25.047 回答