项目文件已经移动、重命名或不在你的电脑上。

159

当我从TFS源代码控制中加载一个VS 2008项目时,出现以下错误:

该项目文件已被移动、重命名或不存在于您的计算机上

点击“确定”后,该项目会显示为“不可用”。 问题出在哪里?如何解决?我以前从未遇到过这个问题。一些博客说要删除.suo文件,但我找不到.suo文件。我将整个项目在本地计算机上删除,以便下次打开时创建一个新的项目,但仍然出现相同的错误。


32
哦,我真讨厌TFS给我带来这些头痛! - John Leidegren
2
往下滑,你会在这里找到正确的答案。 - Claudius
18个回答

292

通常解决这个问题的方法是删除“Solution User Options”(也称为“SUO”)。

VS 2013 及之前版本

在旧版的 Visual Studio 中,它被存储为一个隐藏的 SolutionName.suo 文件,与主 .sln 文件位于同一文件夹中。

VS 2015 或更新版本

在 Visual Studio 2015 中,相同的数据被移动到与主 .sln 文件相同文件夹下的“隐藏”.vs 文件夹中。


6
非常不幸的错误信息 -- 实际上,这种错误最有可能在你按照你的SCC提供商(例如使用'TF重命名'用于TFS)的方式正确移动文件时出现。如果在没有告知TFS的情况下在磁盘上移动项目,或者忘记更新sln/csproj文件,则会导致出现不同的错误消息。由于SUO文件是不透明的,所以你只能一筹莫展,直到你进行tfpt treeclean/scorch操作。 - Richard Berg
44
删除 .suo 文件后,不要忘记重新启动 Visual Studio。 - orandov
9
哦,所以现在.suo文件是隐藏的。为什么?哦,我知道为什么。我们是开发人员,显然无法处理将.suo文件公开显示所增加的复杂性。;-) - Torben Koch Pløen
30
这也适用于 Visual Studio 2015,不过 .suo 文件的路径已更改为 <SolutionFolder>.vs<SolutionName>\v14.suo。 - Greg M.
4
我也在使用VS 2015。如 Greg M. 所指出的那样,SUO文件现在位于解决方案文件夹中名为.vs的隐藏文件夹中。我关闭VS,删除了整个.vs文件夹并重新打开VS,成功解决了错误。 - ckkkitty
显示剩余5条评论

39

我在将项目重新命名后使用VS 2013时遇到了这个问题。Stanley的回答指引我找到了解决方案:

关闭VS - 删除.suo文件 - 再次启动VS。


1
我可能错了,但在关闭VisualStudio之前,我认为我甚至没有看到.SUO文件。 - Michael R
7
请注意,在删除 VS 之前必须先关闭它。如果在 VS 仍然开启的情况下删除该文件,然后再关闭和重新打开,将不会产生任何影响。务必先关闭! - wizloc
@wizloc的上述评论对我很有帮助。为了解决我的问题,我必须关闭所有打开的VS(Visual Studio)实例,然后再删除.suo文件。当我在VS实例仍然打开的情况下删除.suo文件时,关闭并重新打开解决方案对我来说并没有解决问题。另外,值得一提的是,我在尝试向我的解决方案添加新项目时遇到了这个问题。 - Hafiz Adewuyi

26

以特殊方式删除.suo文件。

  1. 在删除隐藏的.suo文件时,请不要打开解决方案。
  2. 重新启动Visual Studio。
  3. 打开解决方案并添加项目,以避免错误消息。

2
在我的电脑上,使用Visual Studio 2019可以正常工作。只需要删除隐藏的.vs文件夹即可。 - tinonetic

12
TFS的工作方式与大多数源代码控制软件相似:它会记住已经放在你的计算机上的内容,当你 "获取最新版本" 时,它只需要获取自上次 "获取" 以来发生过的更改,而不必获取全部内容。
这有一个特例:如果你删除或重命名了本地磁盘上的文件,TFS将不知道你已经这样做了,而且它仍然认为它们在原来的位置。
如果你随后 "获取最新版本",它将不会更新缺失的文件。
此后,你可能会从 TFS 和其他寻找文件的工具中获得各种 "文件丢失" 错误信息。
要解决此问题,你需要:
  • 如果你认为其中有任何不想丢失的更改,请备份计算机上的源文件夹!
  • 右键单击项目(在“解决方案资源管理器”中)或文件夹(在源代码控制中)
  • 从上下文菜单中选择 "获取指定版本"
  • 选择 "最新版本" 并勾选 "强制获取已经存在于你的工作区中的文件" 的选项,这会告诉 TFS 忘记它所 "知道" 的所有文件,并重新获取所有文件。
如果你有任何本地更改(可写)的文件,请小心。有第二个选项将覆盖这些文件,从而丢失更改。但是你已经备份了,所以应该是安全的。通常最好也勾选此选项,以确保所有源代码都是完全更新的(但前提是你不介意丢失任何本地更改!)
当你确认后,这将强制获取项目中的所有文件到你的本地驱动器,并应该解决问题。

我执行了“获取特定版本”的操作,并勾选了“即使本地匹配服务器,也要覆盖所有文件”。没有出现错误,但是什么也没有下载下来。我从另一台电脑上检查,发现该项目在 TFS 中存在,而且其他人可以正常工作。 - sineas
顺便提一下,我的本地源文件夹完全是空的。里面什么都没有。我最初删除了所有文件,这样我就可以获得所有新的文件。就像打开一个全新的项目。 - sineas
1
在这种情况下,我要检查的下一件事是您的工作区映射。在Team Explorer中,双击源代码控制图标,在出现的窗口顶部是一个下拉组合框。展开此下拉列表并选择“添加/编辑工作区”。编辑您的工作区并检查包含您的代码的TFS项目在本地硬盘上是否有相应的文件夹。确保在尝试加载解决方案时正在查看此文件夹。(提示:将您的设置与其他正常工作的开发人员进行比较,以尝试跟踪问题的来源) - Jason Williams

12

对我来说最容易的选择是:

  1. 右键单击项目并删除“未加载”或“不可用”的项目
  2. 右键单击解决方案,并添加“现有项目”

我已经尝试过这个了,但还是出现同样的错误,真受不了这个愚蠢的错误(其实是一个bug),我无法接受这种恶心的bug,它极其令人困惑。 - Hopeless
1
简单明了...懂了。 - Sarath Mohandas
1
当我重命名一个项目和解决方案时,我遇到了这个问题。除了我重命名的那个项目之外,解决方案加载得很好,所有项目也都正常。执行此操作解决了问题。 - Prashant Tiwari
非常感谢!只有这个答案解决了我的问题。执行了这些步骤后,项目正确加载,但是引用该项目的其他项目未按预期工作。为了使其他项目正常工作,请按照以下步骤进行操作: 1)展开未正常工作的项目 2)转到“依赖项”->“项目”->右键单击重新加载的项目->删除 3)右键单击“项目”->“添加项目引用”->选择在第2步中删除的项目->“确定” - Hemanth
非常感谢!只有这个答案解决了我的问题。执行了这些步骤后,项目正确加载,但是引用了该项目的其他项目却没有按预期工作。为了使其他项目正常工作,请按照以下步骤进行操作: 1)展开未正常工作的项目 2)转到“依赖项”->“项目”->右键单击重新加载的项目->删除 3)右键单击“项目”->“添加项目引用”->选择在第2步中删除的项目->“确定” - undefined

10

尽管这是一个众所周知的VS缺陷,但我们肯定可以处理它!

  • 以编辑模式打开解决方案文件

  • 修改相对路径以匹配修改/移动的物理路径..

SccProjectUniqueName1 = Source\\Order\\Order.csproj
SccProjectName1 = Order.ApplicationService
SccLocalPath1 = Order.ApplicationService
同时,确保引用项目的相对路径正确。
Project("{asdasd-301F-11D3-BF4B-asdasd}") = "Order",
        "Source\Order\Order.csproj", "{E25641BC-C990-40E2-8876-08AE8728F763}"
EndProject

6
尝试打开.csproj或.vbproj而不是.sln文件。可能发生的情况是,.sln(解决方案)文件具有对组件项目的绝对文件引用(而不是相对路径)。您可能需要重新创建.sln文件或手动编辑它。

我尝试打开.vbproj文件,但出现了以下信息: “所选文件不能作为解决方案或项目打开。请选择一个解决方案文件或项目文件。” 另外,请提供如何重新创建.sln文件的步骤。我是新手。谢谢。 - sineas
谢谢!打开了csproj文件,退出时它要求创建/保存一个新的.sln文件并覆盖旧的文件! - Rafael

3
在我的情况下,删除 .suo 文件还不够。我发现我的工作空间配置有一个错误。我通过以下步骤发现并解决了这个问题:
  1. 在 Team Explorer 中选择 "管理工作区..."
  2. 点击 "编辑..."
  3. 更正 "本地文件夹" 下的值
  4. 最后,根据接受的答案删除受影响的 .suo 文件。

2

我发现创建一个新的解决方案sln文件最容易。


1
清除您的工作区映射(文件->源代码控制->工作区)。编辑工作区并清除所有映射(更多影响)或找到与此服务器路径相关联的映射。然后打开源代码控制资源管理器并重新映射。在源代码控制资源管理器中双击SLN,它应该获取最新版本。不完全确定发生了什么或您处于什么状态,但这样应该可以让您再次开始工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接