66

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

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

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

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

更新

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

4

10 回答 10

91

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

在 Visual Studio 中:

  • 打开有问题的解决方案
  • 在解决方案资源管理器中选择解决方案
  • 选择File->Source Control->Change Source Control
    Visual Studio 2013/2015:File->Source Control->Advanced->Change Source Control
  • 取消绑定任何已绑定但无法正常工作的项目。
  • 绑定所有现在未绑定的项目。
于 2013-01-02T20:49:49.290 回答
61

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

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

一直为我工作...

于 2014-04-11T11:06:32.890 回答
10

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

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

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

于 2013-01-02T22:40:51.990 回答
2

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

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

于 2016-11-17T13:59:56.670 回答
1

如果您仍在与 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 绑定实际上工作正常,这只是一个错误消息。

于 2019-10-15T12:14:42.123 回答
1

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

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

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

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

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

于 2019-11-29T20:25:20.157 回答
0

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

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

  1. 我的构建 > 右键单击​​构建定义 > 编辑我的构建定义 > 流程
  2. 请注意,“1. 必需 > 构建解决方案”是指旧的解决方案名称。
  3. 单击“构建解决方案”旁边的“...”,
  4. 找到您的新解决方案。点击它
  5. 保存构建定义
  6. 重建
于 2014-07-09T13:10:33.133 回答
0

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

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

于 2018-06-01T11:12:33.943 回答
0

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

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

于 2019-10-17T13:20:55.773 回答
-1

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

于 2016-07-04T20:23:08.813 回答