ChatGPT解决这个技术问题 Extra ChatGPT

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

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

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

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

关于恢复我的绑定有什么想法吗?

更新

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

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

R
Ralph Willgoss

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

在 Visual Studio 中:

打开有问题的解决方案

在解决方案资源管理器中选择解决方案

选择 File->Source Control->Change Source Control Visual Studio 2013/2015:File->Source Control->Advanced->Change Source Control

取消绑定任何已绑定但无法正常工作的项目。

绑定所有现在未绑定的项目。


这隐藏得很好......将它放在右键单击子菜单或其他东西中会非常方便......
我试过这样做,但是当我计时“绑定”时,它会弹出 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
C
Cyril Mestrom

当您的绑定无效并且解除绑定/绑定项目不起作用时,请尝试以下操作:

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

一直为我工作...


通过这种方式,TFS 将所有项目文件视为解决方案中新添加的文件......
这在 2020 年对我有用,现在项目上下文菜单中已经提供了“卸载项目”
我现在已经两次使用这个答案并且它有效。
J
Jonathan Nixon

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

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

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


+1 用于手动编辑解决方案文件。希望你永远不必这样做,但要知道如何以防万一。
编辑 .sln 最终是我必须做的,但它奏效了!谢谢!!
u
user1725145

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

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


a
adospace

如果您仍在与 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)。
S
Spacemonkey

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

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

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

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

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


M
MunsterMan

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

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

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


这似乎是针对“TFS 计划构建不再存在”。而不是“我的解决方案/项目根本与 TFS 无关。”。
N
Nico Timmerman

有完全相同的问题,但后来在 Visual Studio 2017 中。

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


D
Didaxis

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

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


S
SafwanMZ

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