tfs - 如何在 TFS 中重新绑定(bind)我的项目?

标签 tfs

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

enter image description here

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

更新

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

enter image description here

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

更新 2

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

更新 3

再次重新启动 Visual Studio,绑定(bind)似乎被切断了 - 不再有 err msg。但是,它们仍然在工作区中显示为已连接!?!

更新 4

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

enter image description here

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

更新 5

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

enter image description here

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

enter image description here

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

更新 6

好吧,我确实更进一步,并绑定(bind)了一些项目:

enter image description here

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

所以我将有效与 in- 进行了比较,我看到所有“无效”都有额外的路径“描述”,例如“../../”和“..\”等。所以,我去掉了所有这些出来,用那个替换 .sln,然后......什么都没有。无效者仍然无效。

然后我选择了 DaveShaw 建议的“核选项”:TFS Issue: No source control options (get latest, check-out, check-in) for 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 应该根据存储库的结构填写文件夹结构,并用最新的代码填充它。

如果这是它的工作原理,或者可以工作...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)你现在捣碎这个“确定”按钮

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

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

我捣碎了"is",然后看到:

“取得进展
C:\随便\\...”

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

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 项目的文件夹吗?”

我说是”

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

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

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

无论如何,不​​是晒着太阳听幸福的青鸟,湖边的莎草已经枯萎了,没有鸟儿歌唱。

更新 10

我终于按照杰森威廉姆斯的回答让它工作了;但是,由于引用损坏,我仍然有 11,257 条错误消息。有没有办法自动修复这些问题,或者我必须一次通过一个程序集(我知道有些人会修复超过 1 个错误消息,但仍然......)

更新 11

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

enter image description here

最佳答案

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

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

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

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

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

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

  • 服务器上的代码不会构建。例如有人忘记检查所有依赖项等。
  • 服务器上的代码很好,但您已将其映射到 PC 上与原作者不同的位置(例如,您使用 D:\而他使用 C:),并且他没有使其可重定位。如果是这样,最快的解决方法是找出他的映射是如何工作的,然后在您的 PC 上准确复制它(提示:您可以在工作区编辑器中查看其他人的映射,然后将它们复制并粘贴到您自己的映射中)。真正的解决方案当然是追踪每一个损坏的(绝对)文件引用,并使其相对于使解决方案可重定位。
  • 服务器上的代码很好,但是您的工作区映射与您设置 Web 服务器的方式不匹配,然后当 Visual Studio 注意到两者不匹配时,您单击了"is"(不知道这意味着“是的,请为我搞砸一切”)而不是“否”(“我的源代码控制映射中一定有错误,我想我会回去仔细检查一下,谢谢”)。在这种情况下,仔细检查您的源代码控制映射会将代码放在 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
    

    关于tfs - 如何在 TFS 中重新绑定(bind)我的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17459016/

    相关文章:

    c# - 而不是 "Data Row 0", "Data Row 1"等输出自定义名称

    TFS:如何区分已部署和尚未部署的修复?

    visual-studio - 自定义 Team Foundation Server 工作项模板

    azure - 为 Visual Studio Team Services 和 MTM 配置测试 Controller

    TFS 和 Scrum - 区域、迭代、积压迭代、冲刺迭代的最佳实践配置

    powershell - 如何使用电动工具在TFS中更新测试用例?

    tfs - TFS 中的 "watermark"字段是什么?

    java - TFS Java SDK 抛出内存不足异常

    visual-studio-2010 - 与 TFS 的初始连接非常慢

    linux - 使用 GIT 命令将 TFS-GIT 存储库克隆到 GIT 存储库 (Linux)