我有大约12个我正在研究的Visual Studio 2010项目,这些项目在TFS存储库中进行了版本控制。最近我去度假并将我的计算机操作系统升级到Windows 7 64位。
我重新安装了Visual Studio,我可以连接到我的Team Foundation Server并查看我的项目......只有我的绑定无法正常工作。大多数情况下,我的文件似乎都不受源代码控制,但在几个项目中,我的源代码控制绑定在根文件夹中是正常的,但不能在项目根目录下的子文件夹中工作。
我尝试撤消绑定,从源代码控制中打开,删除文件夹并获取最新版本。这些都没有解决问题。
有关恢复绑定的想法吗?
更新
在探索之后,我可以看到在我的“无效”项目的路径中似乎有一个额外的文件夹......我不知道它是如何进入的,但这似乎是在抛弃我的映射。
答案 0 :(得分:76)
你说你试过撤消绑定,但是你尝试重新绑定到源代码控制吗?
在Visual Studio中:
答案 1 :(得分:50)
当你有一个无效的绑定和取消绑定/绑定项目不起作用时,请尝试以下方法:
一直为我工作......
答案 2 :(得分:8)
我同意乔尔的意见 - 通常是解除绑定和重新绑定修复它。
但是,如果重新绑定不起作用,您可以尝试直接编辑解决方案文件。我已经看到TFS绑定在解决方案文件中两次并且由于某种原因看起来不准确的实例 - 它们可能具有错误数量的项目和项目,这些项目和项目设置为空但仍列在解决方案文件中。
当这种情况发生时(非常罕见)我编辑文件并使它们成为应有的方式。例如,我将删除第二组TFS绑定(GlobalSection(TeamFoundationVersionControl)或修复我看到的任何其他差异。然后我重新加载解决方案,这通常可以解决问题。我肯定只会使用该修复作为最后的手段虽然。
答案 3 :(得分:1)
我第一次在新安装的Visual Studio中使用新制作的Workspace打开现有(以及之前正在运行)的解决方案时看到了这个问题。
解除绑定和重新绑定并没有解决我的问题。但是当我做了最新版本时它就消失了。 TFS显示文件存在冲突,我通过覆盖本地副本解决了冲突。之前无效的绑定随后显示为有效。
答案 4 :(得分:0)
当我重命名我的解决方案时,我也遇到了这个错误。我尝试了以上所有内容并没有解决问题。
我的实际解决方案是使用新的解决方案名称
编辑构建定义答案 5 :(得分:0)
在视觉工作室2017中有完全相同的问题。
解除束缚和重新绑定并不适合我。 在最后,我解决了它解决了解决方案+解决方案文件本身中的所有项目,然后做了一个“获取最新版本”和#39;对于整个分支。这导致了一系列冲突:'非版本控制文件或同名的可写文件已在本地存在'。 通过选择'覆盖本地文件管理器或文件夹选项'解决了这些错误。 最后,这解决了我的问题
答案 6 :(得分:0)
如果您仍在与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)中仍然存在此行为。
我不知道是否有一种方法可以禁用此启发式方法,但是我很确定这是一种假的Invalid状态,即tfs绑定实际上正在正常工作,而这只是一条错误消息。
答案 7 :(得分:0)
我在这里看到了许多提供不同解决方案的答案。我过去曾发生过几次这种情况,通常不绑定/重新绑定就可以了。但是,我最近才与这个问题发生争执,似乎没什么用。
因此,我只是删除了计算机上的解决方案目录,然后从源代码获取了最新的解决方案目录。像魅力一样工作。但是,我所有的更改都已签入,因此我不必担心丢失任何东西。 YMMV。
答案 8 :(得分:0)
我将在此处添加它,因为我遇到了这种情况的变体,不得不自己寻找解决方案。
TLDR:
1)。确保项目未绑定。
2)手动选择项目的所有文件并将其添加到sourcecontrol(而不是项目本身)中-这应该在TFS下创建有问题的项目的根文件夹
3):在源代码管理浏览器中,导航到有问题的项目的根文件夹,然后将其.csproj手动添加到源代码管理中
关于如何/为什么到达那里的完整故事:
如果以上所有答案均无效(* adospace的答案可能与此有关-但我不太理解:P)
我的解决方案中有9个项目中有2个纯粹是资源项目。当我将整个内容放入tfs并将其映射到源代码控制时,它们将坚决保留无效的绑定(仅是两个资源项目),我没有做任何修复。当我最终尝试将项目的单个文件手动添加到tfs(.resx)时,TFS发出了有关文件被忽略的警告,就像.exes一样,在添加-重新映射-修复我的解决方案时,它从来没有做过一次。该警告使我无论如何都可以将文件添加到TFS,与此同时,它创建了完整的项目文件夹结构,而项目本身仍然保持绝对绑定。但是从那里,我能够将每个.csproj手动添加到TFS,并且神奇地现在,这些项目已正确绑定并处于源代码控制之下。我不确定为什么这些文件类型会被添加到源代码管理中而被忽略,这可能是TFS或VS中的某些默认设置。
答案 9 :(得分:-1)
确保您的解决方案已添加到源代码管理中: 文件>源控制>添加解决方案到源代码管理。