项目文件已被重命名或不在您的计算机上


150

当我尝试从TFS源代码控制加载VS 2008项目时出现此错误:

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

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


28
哦,我多么讨厌TFS给我带来这些头痛!
约翰·莱德格伦

2
下去,您会在这里找到正确的答案。
克劳迪乌斯

Answers:


270

通常可以解决的问题是删除“解决方案用户选项”(又称“ SUO”)。

VS直到2013

在较旧的VS中,它作为“隐藏”存储SolutionName.suo在与主.sln文件相同的文件夹中。

VS2015或更高版本

在VS2015中,相同的数据已移至.vs与主.sln文件相同的文件夹下的“隐藏” 文件夹。


6
+1。非常不幸的错误消息- 根据您的SCC提供者以“正确”的方式移动文件后,实际上有可能出现该错误消息。(例如,为TFS使用“ tf重命名”)不告诉TFS将项目移动到磁盘上,或者忘记更新sln / csproj文件,会导致不同的错误消息。SUO文件是不透明的,因此您需要挠头​​直到执行tfpt treeclean / scorch。
理查德·伯格

8
它拯救了我的一天;)
Kamil Lach

44
删除.suo文件后,别忘了重新启动Visual Studio
orandov 2012年

8
哦。因此,现在.suo文件已隐藏。为什么?哦,我知道为什么。我们是开发人员,很显然无法公开看到.suo文件;-)
Torben Rahbek Koch

29
尽管.suo文件的路径已更改为<SolutionFolder> \。vs \ <SolutionName> \ v14 \ .suo,这在Visual Studio 2015中也适用。
Greg M.

38

重命名项目后,我使用VS 2013遇到了这个问题。斯坦利的答案将我引向了解决方案:

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


1
我可能是错的,但是直到关闭VisualStudio,我什至都看不到.SUO文件。
Michael R

5
只想添加-必须删除VS之前先关闭它。在VS仍处于打开状态时删除文件,然后关闭并重新打开则没有效果。必须先关闭!
wizloc 2015年

23

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

  1. 删除隐藏的.suo文件时,请不要打开解决方案。
  2. 重新启动VisualStudio。
  3. 打开解决方案并添加项目,而不会出现错误消息。

为我工作的Visual Studio2019。仅您删除隐藏的.vs文件夹
user919426

11

TFS就像大多数源代码控制程序包一样工作:它会记住它在计算机上放置的内容,因此,当您“获取最新”信息时,它仅需获取自上次“获取”信息以来的变化,而不必绝对获取所有信息。

这有一个警告:如果删除或重命名磁盘上的本地文件,TFS不会知道您已完成此操作,并且它仍然会认为它们在原处。

如果您然后单击“获取最新”,则不会麻烦更新丢失的文件。

这样,您很可能会从TFS和其他用于查找文件的工具中获得各种“丢失文件”错误。

要解决这个问题,您需要:

  • 如果您不想在其中进行任何更改,并且不想丢失,请复制PC上的源文件夹作为备份,以防万一!
  • 右键单击项目(在“解决方案资源管理器”中)或文件夹(在“源代码管理”中)
  • 从上下文菜单中选择“获取特定版本”
  • 选择获取“最新版本”,然后选中表示(类似)“强制获取工作区中已经存在的文件”的选项,该选项告诉TFS忘记它“知道”的内容,并且无论如何都要再次获取所有文件。

如果您有任何本地更改(可写)的文件,请当心。还有第二个选项将覆盖这些选项,从而丢失您的更改。但是您有备份,因此应该安全。通常最好同时勾选此选项,以确保所有源代码都是最新的。(但是很明显只有在您不介意丢失任何本地更改的情况下!)

单击确定后,这将强制将项目中的所有文件都移至本地驱动器,并应解决此问题。


我做了“获取特定版本”,并检查了“即使本地匹配服务器覆盖所有文件”。没有错误,但是什么也没进。我从另一台计算机检查了一下,项目在TFS中,其他人可以在上面正常工作。
sineas 2010年

顺便说一句,我的本地源文件夹完全为空。里面什么都没有。我最初删除了所有文件,以便可以获取所有新文件。就像打开一个全新的项目。
sineas

1
在这种情况下,我要检查的下一件事是您的工作区映射。在团队资源管理器中,双击“源代码管理”图标,然后在出现的窗口顶部是一个下拉组合框。将其下拉并选择“添加/编辑工作区”。编辑您的工作区,并检查包含您的代码的TFS项目在本地硬盘驱动器上是否具有相应的文件夹。并确保在尝试加载解决方案时正在查看此文件夹。(提示:将您的设置与其他开发人员的设置进行比较,以尝试
Jason Williams 2010年

9

尽管这是众所周知的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文件并覆盖旧的文件!
拉斐尔

5

对我来说,最简单的选择是:

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

我已经尝试过了,但是仍然是同样的错误,无法忍受这个愚蠢的错误(真的是一个错误,我不能接受这种讨厌的错误,非常令人困惑)。
绝望的

1
简单而直接...明白了。
Sarath Mohandas

3

就我而言,删除.suo文件是不够的。我发现我的工作区配置有错误。我通过以下步骤发现并解决了该问题:

  1. 在团队资源管理器中,“管理工作区...”

    在此处输入图片说明

  2. 点击“编辑...”

    在此处输入图片说明

  3. 更正“本地文件夹”下的值

    在此处输入图片说明

  4. 最后,根据接受的答案删除受影响的.suo文件。


2

我发现创建新的Solution sln文件最容易。


1

清除您的工作区映射(文件->源代码管理->工作区)。编辑工作空间,然后清除所有映射(更具影响力)或找到与此服务器路径关联的映射。然后打开Source Control Explorer,然后重新映射。双击“源代码管理”资源管理器中的SLN,它应该是最新的。不能完全确定发生了什么事或设法进入什么状态,但是这样做应该可以使您再次行动。


1

我遇到了这个问题,并能够通过.rptproj从同事那里获取文件并将其复制到本地目录中来解决该问题。然后该项目便可以重新加载。


1

我花了很多时间尝试解决这个问题。我执行了以下步骤:重命名项目,重命名空间,重命名项目文件夹,编辑.sln文件,编辑隐藏的.suo文件。项目已加载,但TFS无法识别!终于我找到了这个指南

如果您使用的是Resharper并且TFVC是您的版本控制,请按照以下步骤操作:

  • 在解决方案资源管理器中右键单击该项目,选择“重命名”,然后输入新名称

  • 再次右键单击该项目,然后选择“属性”。在“应用程序”选项卡上更改“程序集名称”和“默认名称空间”。

  • 再次右键单击该项目,然后选择“重构”->“调整命名空间”。接受更改。

  • 在Properties / AssemblyInfo.cs中更改AssemblyTitle和AssemblyProduct

  • 在Windows资源管理器中删除bin和obj目录

  • 打开源代码管理资源管理器,然后重命名项目目录。这将关闭解决方案。让它关闭。

  • 打开SLN文件(使用文本编辑器,例如Notepad ++),然后更改项目的路径(应该有多个位置)。

  • 再次打开解决方案。清理并重建项目。




0

有时,即使你改变.sln.csproj路径,以及手动重命名,你可能会忘记检查包含项目的文件夹名称。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.