【问题标题】:How to prevent "There appears to be a discrepancy between the solution's source control..." without changing the .sln file如何在不更改 .sln 文件的情况下防止“解决方案的源代码管理之间似乎存在差异......”
【发布时间】:2011-08-08 21:09:19
【问题描述】:

注意:我看到了 "There appears to be a discrepancy between the solution's source control ...." ,但这不适用,因为我希望在不更改 .sln 文件的情况下修复此问题。

由于某种原因,每当我打开 sln 文件中的解决方案时:

SccTeamFoundationServer = http://servername:8080/tfs/defaultcollection
SccAuxPath* = http://servername:8080/tfs/defaultcollection

我的VSS副本坚持要切换到

SccTeamFoundationServer = http://servername:8080/tfs/
SccAuxPath* = http://servername:8080/tfs/

保存这些更改确实为我解决了所有问题,但是使用相同版本控制服务器的其他所有人都可以使用第一个版本,但不能使用第二个版本。我希望我的计算机的版本控制服务器/路径与我同事的一致。

每个人都在使用 Visual Studio 2010 和 Visual Studio 2010 Team Explorer。

【问题讨论】:

标签: visual-studio-2010 tfs version-control


【解决方案1】:

我在使用包含 *.vcxproj 项目文件的解决方案时遇到了这个问题,这些文件以前从 VS2008 迁移到 VS2010。 TFS 的路径在 .sln 文件和 .vcxproj 文件中都定义了。

最简单的修复方法是更新 *.vcxproj 项目文件以使用 SAK 关键字。

即从格式更新:

<SccProjectName>$/MyProject/Directory/abc</SccProjectName>
<SccAuxPath>http://servername:8080/tfs/defaultcollection</SccAuxPath>
<SccLocalPath>.</SccLocalPath>
<SccProvider>{11111111-1111-1111-1111-111111111111}</SccProvider>

<SccProjectName>SAK</SccProjectName>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
<SccProvider>SAK</SccProvider>

【讨论】:

  • 我认为这与问题有关,但错误在我没有注意到的情况下停止发生,所以我对此并不完全有信心。
  • 这完全解决了我的问题。我有一个没有对这 4 个项目使用“SAK”的 csproj,并且修改它解决了这个问题。
  • 宾果游戏 - 这里也一样。一个项目没有将这些设置设为“SAK”。更改了它们并解决了问题。
  • SAK 关键字是什么意思?为什么它可以解决问题?
  • @JanNilsFerner - 好的,但它如何解决问题?
【解决方案2】:

您是否尝试在团队资源管理器设置 - 团队项目连接中连接到 http://servername:8080/tfs/defaultcollection 而不是 http://servername:8080/tfs/?尝试这样做,让拥有http://servername:8080/tfs/ 版本的人签入,重新映射您的本地实例然后获取最新版本。

【讨论】:

  • 我收到错误消息“TF249001:您已指定项目集合的 URL,但将添加包含项目集合的应用程序实例。”
【解决方案3】:

我刚刚遇到了这个确切的问题。我终于通过断开 TFS 并重新连接解决了这个问题: 在 Team Explorer (View-Team Explorer) 中,右键单击您的 TFS 服务器名称,然后单击“断开连接”。然后单击 Team-Connect to Team Foundation Server...

执行此操作时,我没有任何待处理的更改。在执行此操作之前,我会检查您的代码或至少搁置您的更改,以减少丢失工作的机会。

发生这种情况的计算机已经运行了一年多,但我猜 Visual Studio 以某种方式将名称缓存为 http://servername:8080/tfs/ 而不是 http://servername:8080/tfs/defaultcollection 并断开连接并重新连接到 TFS 将 VS 重置为 @ 的正确路径987654323@。在我的服务器上(我猜每个人的)http://servername:8080/tfs/http://servername:8080/tfs/defaultcollection 指向同一个东西。 Raymund 的解决方案对我不起作用 - 我遇到了与 Brian 相同的问题。

【讨论】:

  • 我也有同样的问题,但是你的建议在 VS2015 中是不可能的。
【解决方案4】:

使用 Visual Studio,您可以通过解除绑定和绑定解决方案和/或项目来解决此问题。试试这个:

  1. 在VS中打开问题解决方案(刚才在VS2013中做了这个)
  2. 提交您需要提交的任何内容(让我们保持简单 - 无需合并/签入)
  3. 如果有任何待定更改,则撤消对该解决方案中所有项目的所有待定更改以及对解决方案本身的任何更改
  4. 转到文件 -> 源代码管理 -> 高级 -> 更改源代码管理
  5. 选择有问题的项目并点击“解除绑​​定”
  6. 单击确定并关闭窗口(这很重要 - 如果您不单击确定 VS 不会正确更新解决方案
  7. 转到文件 -> 源代码管理 -> 高级 -> 更改源代码管理
  8. 选中#5中你解绑的所有项目,点击“绑定”
  9. 点击确定并关闭窗口
  10. 检查您的解决方案和项目更改
  11. 关闭解决方案并重新打开它,现在一切都应该没问题了

【讨论】:

  • 此方法给出的结果与已接受答案中描述的结果完全相同;但是,对于多个项目,它更不容易出错且速度更快,因此建议使用。特别是它应该有助于以后在配置中添加的任何其他内容,并且更容易记住:)
【解决方案5】:

还可以尝试从源代码管理资源管理器中打开 .sln 文件,我认为这可能已经解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 2022-11-19
    • 2013-10-20
    相关资源
    最近更新 更多