HowTo:将项目状态从“无效”更改为“有效”?

时间:2015-06-09 16:19:08

标签: visual-studio-2013 version-control tfs source-control-bindings

关于Team Foundation Server的(TFS)源代码控制...如何将项目的状态从Invalid更改为Valid

背景

我们正在重组几个解决方案& TFS中的项目。在这种情况下:

  1. 首先执行 Branch 操作,将现有的Solution + Projects移动到TFS存储库中的新位置。
  2. 项目层次结构很乱,所以我使用TFS Move 操作将项目移动到适当的位置。
    • 此步骤是在许多项目上执行的。对于99%的人来说,绑定是可以的。
  3. 然后将更改提交给TFS。
  4. 不同的方法

    在Visual Studio中......

    • 打开问题解决方案
    • 在“解决方案资源管理器”中选择解决方案
    • 选择文件 - >来源控制 - >更改来源控制
    • 取消绑定任何已绑定但无法正常工作的项目。
    • 绑定所有现在未绑定的项目。

    两个

    1. 从磁盘删除所有源代码。
    2. 启动 Visual Studio
    3. 打开源代码管理资源管理器窗口
    4. 工作区下拉列表=> 工作区 =>选择MyWorkspace => 编辑... => 高级
      • 一切都很好
    5. 确保没有与解决方案项目相关的TFS 待定更改
    6. 来源控制=>获取最新的
    7. Notepad ++
    8. 中打开解决方案(例如MySolution.sln
    9. 删除整个部分:
      • GlobalSection(TeamFoundationVersionControl) = preSolution
    10. 保存了解决方案文件。
    11. Notepad ++
    12. 中打开项目文件(例如MyProject.vcxproj)
    13. 删除了以下XML元素:
      • SccProjectName
      • SccAuxPath
      • SccLocalPath
      • SccProvider
    14. 保存了项目文件。
    15. Visual Studio => File =>打开=>溶液
    16. 点击了解决方案资源管理器
    17. 中的MySolution
    18. File =>源控制=>高级=>更改源代码管理
      • 状态列中,MySolutionMyProject列为Not Controlled
    19. 点击MySolution绑定
    20. 点击确定。到目前为止一切顺利。
    21. File =>源控制=>高级=>更改源代码管理
      • 状态列中,MyProject列为Not Controlled
    22. 点击MyProject绑定
      • 状态列中,MyProject现已标记为Invalid
    23. 如果我现在单击“确定”,则会显示以下错误:
      • “某些项目已绑定到可能不正确的服务器位置。位置可能不正确,因为它不包含大多数项目的文件,或者因为这些文件不在相对于指定服务器的正确位置您应该修复解决方案中的所有绑定。但是,您可以继续并将这些项目绑定到指定的位置,即使某些项目可能不正确。“
    24. 单击:修复服务器绑定
      • 对话窗口消失。
    25. 点击:好的
      • 重新显示上一个错误。
    26. 点击:继续这些绑定
      • 对话窗口消失,但我仍无法解决此问题:(
    27. 环境

      • Visual Studio Premium 2013(v12.0.21005.1 REL)
      • Windows 8.1 Enterprise(64位)
      • 此解决方案包含其他几个项目(C ++和C#),绑定很好。
      • 此解决方案目前没有构建定义。

      补充阅读

3 个答案:

答案 0 :(得分:0)

通常我会避免检查不是[1]可编译的代码,并且[2]准备好生产(或者至少准备好进行QA)。

在这种情况下,我决定忽略自己的规则,现在我付出了代价:(

解决方案

虽然使用TFS Move命令正确更改了项目位置,但是一些C ++项目的引用指向了旧路径。因此,这些项目的 Binding 状态为Invalid

  • 项目过滤器包含一个不再位于旧位置的文件。
    • MyProject => ThirdPartyLib过滤器=> HeaderOfSomeLibraryFile.h
  • MyProject.vcxproj的项目引用无效。
    • MyProject => Properties => Common Properties => References

纠正这些问题后,MyProject.vcxproj绑定状态会自动切换为Valid

答案 1 :(得分:0)

今天我遇到了同样的问题。在尝试了不同的方法之后,我发现当前解决方案中的两个文件被忽略了(它们没有添加到TFS repo中)。在我的情况下,我有2个自定义" .config"文件。

手动添加这些文件后,状态更改为“有效”状态。并且绑定现在正在运行。

答案 2 :(得分:0)

我找到了两种解决方案:

  1. 取消绑定,卸载项目,然后重新加载。 来自Binding Invalid

  2. 删除不在源代码管理中的文件。来自Solving the "Some projects have been bound to server locations that may be incorrect." in Visual Studio 2010 when using Team Foundation System 2010:如果无法在本地找到一定比例的解决方案项,并且不在版本控制系统中,则Visual Studio会将与版本控制系统绑定的解决方案标记为“无效”。

就我而言,这是因为Angular构建会生成许多文件,而我使用.tfignore来阻止它们被检入。 Visual Studio 2019找到了``它不包含大多数项目文件'',并将该项目标记为``无效''。删除这些文件后,它将自动变为“有效”。因此,“无效”状态只是一种误导/无用的警告。您可以忽略该警告,因为没有什么是真正的“无效”。