项目文件“”已被重命名或不再在解决方案中。

14

在尝试在Visual Studio 2008中构建解决方案时,是否曾遇到过此错误?

这让我非常烦恼!我已删除所有包含的项目并重新添加它们,但仍无法构建或运行该解决方案。

有什么建议吗?


你是想要建立一个新项目还是维护一个已有的项目?能否提供更多细节? - Malcolm
现有的解决方案,只是从中删除了一些不再存在的项目,然后VS就有点疯狂了! - Ed James
1
微软难道不能做得更好吗?比如,提供一些指示哪个项目出了问题?由于 Visual Studio(和 C++)的 bug 或不良行为,我已经浪费了无数个小时。 - Sam Goldberg
7个回答

9
如果您在文本编辑器中打开解决方案文件(SolutionName.sln),每个项目应该会有几行类似于以下内容的代码:
Project("{FAE04EC0-301F-11D3-BF4B-00C04F89EFBC}") = "ProjectName", "ProjectName\ProjectName.csproj", "{6B887D8C-D874-4AB2-B2CC-3551DEA2CC83}"
EndProject

这些行之间可能有更多的内容,或者在某些情况下它们可能会损坏。如果您能够确定问题条目并将其删除,您可能会恢复解决方案。


1
只有我预期的两个命名项目和一些全局信息,没有没有名称的额外项目... - Ed James
如果您创建一个新的解决方案并将现有项目添加到其中,它是否能正常工作? - Colin Pickard
不知道如何从头开始创建一个SLN而不是从项目开始? - Ed James
你可以在新的 Visual Studio 副本中打开任意一个 project.csproj 文件,它会自动为其创建一个解决方案。 - Colin Pickard
7
没事了,问题解决了:移除一个项目后,并没有从另一个项目中移除对这个程序集的引用,这似乎让 Visual Studio 感到困惑。我认为这是有史以来最糟糕的错误信息 :D。 - Ed James

8
昨天我花了几个小时来解决这个错误,幸运的是最终找到了问题的根源。
我们有一个项目文件,让我们简称为ProblemProj.vcxproj,它最初包含在SolutionA.sln中并且编译正常。然后将该项目添加到另一个解决方案SolutionB.sln中,并在该解决方案中编译正常。但是,回到SolutionA后,“project file'' has been renamed”错误开始发生。
这是因为VS2010决定更改ProblemProj.vcxproj的ProjectGUID。SolutionB.sln引用了正确的GUID,但SolutionA.sln仍然引用旧的GUID。
您可以在.sln文件中找到它,类似于以下内容: {271F161A-F26F-41D1-BDC8-FCF912A2F4FB} 可以通过以下方式修复此问题:
1)手动编辑SolutionA.sln中上述标记,以此来修改GUID。
2)从SolutionA.sln中删除该项目,然后重新添加它。这将使其拾取正确的GUID,并且幸运的是不会再次更改它。
3)还原ProblemProj.vcxproj中的GUID更改(这将导致SolutionB中出现完全相同的错误,所以除非SolutionB不再重要,否则我不建议这样做)。
希望这可以帮助您。

5

这里所接受的解决方案并没有解决我们的问题。.sln文件中有正确的项目路径。相反,事实证明是有人将.sln.cache文件推送到了git中,并且它有错误的项目路径。我们从计算机中删除了.sln.cache文件,构建工作正常了。为了将来避免这种情况,我们从git中删除了.sln.cache文件,并将*.sln.cache添加到.gitignore文件中。


2

我在使用VS 2012时遇到了相同的错误,但原因略有不同。之前这个错误没有出现过,是在我打开一个之前用VS 2010创建的解决方案后出现的。

事实证明,解决方案中的一个C++项目引用了一个未命名的项目(只有一个GUID;无名称,无路径)。只要加载这个项目,就无法构建、清理或显示解决方案中任何项目的引用。我通过卸载解决方案中的项目,直到停止报错,才找到了具有错误引用的项目。


1

前往您的项目引用并检查是否有一个带有标签(不可用)的引用项目。

删除此引用并重新添加。

这种情况发生在我身上,这就是我找到解决此问题的方法。


谢谢您的提示,解决了我的问题。在这个情况下,问题在于项目引用了不在解决方案中的其他项目。通过查看项目引用,我意识到了这一点。 - jstuardo

0

清除SDF。我尝试检查所有GUID和引用,但没有成功。我删除了解决方案的SDF文件,问题得到了解决。(SDF是自动生成的数据库文件。)


-1

这个错误可以在VC2012中由多种问题引起。在我的情况下,错误是因为我没有将所有项目依赖项添加到项目树中而发生的。举个例子,我正在开发一个程序,让我们称之为MyProgram,它使用Library A中的函数。Library A项目已经被添加到项目树中。然而,Library A项目依赖于包含在Library B中的函数。如果Library B项目没有被添加到MyProgram项目中,那么在编译和链接时就会生成此错误。添加Library B项目将解决此问题。

我想技术上来说,错误信息是正确的,但是如果有更详细的错误信息,比如“项目MyProgram缺少Library A的依赖项”,那么这个问题将更容易诊断。


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