重新建立 TFS 源代码控制绑定

Posted

技术标签:

【中文标题】重新建立 TFS 源代码控制绑定【英文标题】:Re-establish TFS source control bindings 【发布时间】:2012-12-17 05:08:51 【问题描述】:

我一直在处理大约十几个 Visual Studio 2010 项目,这些项目在 TFS 存储库中进行了版本控制。最近我去度假,把我的电脑操作系统升级到了 Windows 7 64 位。

我已重新安装 Visual Studio,并且可以连接到我的 Team Foundation Server 并查看我的项目...只是我的绑定无法正常工作。大多数情况下,我的文件似乎都不受源代码控制,但在几个项目中,我的源代码控制绑定在根文件夹中正常,但在项目根目录下的子文件夹中不起作用。

我已尝试撤消绑定、从源代码管理打开、删除文件夹并获取最新版本。这些都没有解决问题。

对恢复绑定有什么想法吗?

更新

四处逛逛后,我可以看到我的“无效”项目的路径中似乎有一个额外的文件夹......我不知道它是如何进入那里的,但这似乎正在抛弃我的映射。

【问题讨论】:

“无效”项目中的额外文件夹可能是在构建过程中创建的。除非您将其“添加”到您的项目中,否则它将对 TFS 没有影响(这反过来会将其“添加”到 TFS)。需要注意的是:如果它项目的一部分,但不是在 TFS 中,那么你需要将它添加到 TFS。 :) 我的源代码管理绑定无效。我发现在我的项目中不断创建一个 $tf1 文件夹(当前日期)。几个月前我已经有一个 $tf 文件夹了。我尝试解除绑定和重新绑定,没有解决问题。一旦我删除了 $tf1,然后将 $tf 重命名为 $tf1,我的绑定就起作用了!我的未决更改会根据需要保留。 【参考方案1】:

您说您已尝试撤消绑定,但您是否尝试过重新绑定回源代码管理?

在 Visual Studio 中:

打开有问题的解决方案 在解决方案资源管理器中选择解决方案 选择文件->源代码管理->更改源代码管理 Visual Studio 2013/2015:文件->源代码管理->高级->更改源代码管理 取消绑定任何已绑定但无法正常工作的项目。 绑定所有现在未绑定的项目。

【讨论】:

隐藏得非常好...将它放在右键单击子菜单或其他东西中会非常方便... 我试过这样做,但是当我“绑定”时钟时,它会弹出 SourceSafe 对话框 - 但我需要将它绑定到 TFS?有人可以帮忙吗? @NewStart 您真的应该将其作为一个单独的问题提出,但我的第一个想法是您的工具->选项->源代码控制插件设置为 SourceSafe 而不是 TFS。 请注意,在 Visual Studio 2013 中,它位于 File->Source Control->Advanced->Change Source Control 如果您在解决方案中重新组织您的项目(例如 TFS Move 命令),那么您可能有无效的引用。因此,ProjectA 将具有Invalid 的绑定状态。 例如[1]ProjectA 中的 C++ 项目 Filter 包含不再位于旧位置的文件,或者 [2] ProjectA 包含对不再位于旧位置的ProjectB 的引用。见:ProjectA -> Properties -> Common Properties -> References【参考方案2】:

当您有一个无效的绑定并且取消绑定/绑定项目不起作用时,请尝试以下操作:

    在 Change Source Control 中取消绑定项目 在解决方案资源管理器中卸载项目(对于网站项目,“卸载项目”不在上下文菜单中,而是在“网站”菜单中) 在解决方案资源管理器中重新加载项目

一直为我工作......

【讨论】:

这样,TFS 将所有项目文件视为新添加到解决方案中的文件... 这在 2020 年对我有用,现在项目上下文菜单中已经提供了“卸载项目”【参考方案3】:

我同意 Joel 的观点 - 通常解除绑定和重新绑定会修复它。

但是,如果重新绑定不起作用,您可以尝试直接编辑解决方案文件。我已经看到 TFS 绑定两次出现在解决方案文件中并且无论出于何种原因似乎都不准确的实例 - 它们可能有错误的项目数量以及设置为空但仍列在解决方案文件中的项目。

当这种情况发生时(非常罕见),我会编辑文件并按照应有的方式制作它们。例如,我将删除第二组 TFS 绑定 (GlobalSection(TeamFoundationVersionControl) 或修复我看到的任何其他差异。然后我重新加载解决方案,这通常可以解决问题。我肯定只会使用该修复作为最后的手段不过。

【讨论】:

+1 用于手动编辑解决方案文件。希望您永远不必这样做,但要知道如何以防万一。 编辑.sln 最终成为我必须做的事情,但它奏效了!谢谢!!【参考方案4】:

我第一次在新安装的 Visual Studio 中打开现有(以前工作的)解决方案时发现了这个问题,并带有一个新制作的工作区。

取消绑定和重新绑定并没有解决我的问题。但是当我做了一个获取最新版本时它就消失了。 TFS 将文件显示为冲突,我通过覆盖本地副本解决了冲突。然后将之前无效的绑定显示为有效。

【讨论】:

【参考方案5】:

如果您仍在与 TFS 绑定无效状态作斗争,我在此报告我在旧的 (2005) MSDN 论坛 (https://social.msdn.microsoft.com/Forums/en-US/801b2490-776d-43a8-afef-adcedd78f02d/vsts-change-source-control-status-invalid?forum=tfsgeneral) 中发现的“宝石”:

这是由于绑定验证代码中使用了启发式算法。启发式对项目中的所有文件进行存在性检查,并且仅在源代码控制存储库中存在至少一半文件时才返回“有效”。由于 Web 项目没有项目文件,因此驻留在 Web 项目文件夹中的任何文件都被视为“项目的一部分”。显然你有足够的非受控文件将受控项目文件的百分比倾斜到 50% 以下,从而导致无效状态。

换句话说,如果您的项目中有许多不受控制的文件(当您选择退出签入 web 项目中的 node_modules 或 public 等文件夹时尤其如此)并且这些文件的数量超过文件夹中所有文件的 50%,无论您做什么,TFS 绑定状态都是无效

我可以验证此规则,只需删除正确数量的文件,直到绑定状态变为无效,然后添加一个新的(不受控制的)获得无效状态。

这种行为在 VS 2019 6.3 (Azure DevOps) 中仍然存在。

我不知道是否有办法禁用这种启发式,但我很确定这是一个假的无效状态,即 tfs 绑定实际上工作正常,这只是一个错误消息。

【讨论】:

多么奇怪,这解决了我在 VS 2019 16.9.3 中的一个仅供参考的项目。我本来打算添加额外的文件(它们是不自动添加的 dll)。【参考方案6】:

我将在此处添加此内容,因为我遇到了此问题的变体,并且必须自己找到解决方案。

TLDR::1) 确保项目未绑定。2) 手动选择所有文件项目并将它们添加到源控制(不是项目本身) - 这应该在 TFS 下创建有问题的项目的根文件夹3) 在源控制资源管理器中,导航到有问题的项目的根文件夹并手动将其 .csproj 添加到源代码管理中

以及我如何/为什么到达那里的完整故事:

如果以上所有答案都不起作用(*adospace 的答案可能与此有关 - 但我不太明白:P)

我的解决方案中有 9 个项目中有 2 个是纯资源项目。当我将整个东西带入 tfs 并将其映射到源代码控制时,它们将坚决保留无效绑定(只是两个资源项目),我没有修复它。当我最终尝试手动将项目单个文件添加到 tfs(.resx)时,TFS 会发出有关文件被忽略的警告,就像 .exes 一样,这是它在添加 - 重新映射 - 修复我的解决方案时从未做过的事情。该警告允许我将文件添加到 TFS 中,同时它创建了完整的项目文件夹结构,而项目本身仍然坚决未绑定。但是从那里我能够手动将每个 .csproj 添加到 TFS 并且神奇地这些项目现在已正确绑定并处于源代码控制之下。我不确定为什么这些文件类型在添加到源代码管理时会被忽略,这可能是 TFS 或 VS 中的一些默认设置。

【讨论】:

【参考方案7】:

当我重命名我的解决方案时,我也遇到了这个错误。我尝试了以上所有方法,但并没有解决问题。

对我来说实际的解决方案是使用新的解决方案名称编辑构建定义

    我的构建 > 右键单击​​构建定义 > 编辑我的构建 定义>过程 请注意,“1. 必需 > 构建解决方案”是指旧的解决方案名称。 点击“Solution to Build”旁边的“...”, 找到您的新解决方案。点击它 保存构建定义 重建

【讨论】:

这似乎是针对“TFS 计划构建不再存在”。而不是“我的解决方案/项目根本与 TFS 无关。”。【参考方案8】:

在 Visual Studio 2017 中遇到了完全相同的问题。

解除绑定和重新绑定对我不起作用。 最后,我通过取消绑定解决方案中的所有项目 + 解决方案文件本身来解决它,然后为整个分支执行“获取最新版本”。这导致了一系列冲突:“本地已存在同名的非版本控制文件或可写文件”。 通过选择“覆盖本地文件管理器或文件夹选项”解决了这些错误 最后这为我解决了它

【讨论】:

【参考方案9】:

我在这里看到许多提供不同解决方案的答案。我过去曾发生过几次这种情况,通常解除绑定/重新绑定就可以了。但是我最近刚刚解决了这个问题,但似乎没有任何效果。

所以,我只是删除了我机器上的解决方案目录,然后从源代码中获取最新的。像魅力一样工作。但是,我的所有更改都已签入,因此我不必担心丢失任何东西。 YMMV。

【讨论】:

【参考方案10】:

确保您的解决方案已添加到源代码管理中: 文件 > 源代码管理 > 将解决方案添加到源代码管理。

【讨论】:

以上是关于重新建立 TFS 源代码控制绑定的主要内容,如果未能解决你的问题,请参考以下文章

安全删除 TFS 分支项目

从解决方案中删除 TFS 连接

源代码管理工具——TFS

重新拾取:TFS2017钉钉机器人源代码签入通知

如何在mac里面,把xcode代码同步到 tfs 的 git库

如何将 TFS 与 Pentaho 一起使用(如何使用 Microsoft TFS 对 Pentaho 文件进行源代码控制)?有没有简单的方法?