项目文件''已重命名或不再在解决方案中

时间:2010-05-07 10:31:16

标签: visual-studio-2008

在尝试在Visual Studio 2008中构建解决方案时,有任何人遇到此错误吗?

这是让我疯狂的!我删除了所有包含项目并重新添加它们,但它仍然没有让我构建或运行解决方案。

有什么建议吗?

7 个答案:

答案 0 :(得分:8)

如果您在文本编辑器中打开解决方案文件(SolutionName.sln),那么每个项目应该有几行类似的内容:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F89EFBC}") = "ProjectName", "ProjectName\ProjectName.csproj", "{6B887D8C-D874-4AB2-B2CC-3551DEA2CC83}"
EndProject

这些行之间可能存在更多内容,或者在这种情况下,它们可能以某种方式损坏。如果您可以隔离问题条目并将其删除,您可以重新获得解决方案。

答案 1 :(得分:8)

我昨天花了几个小时来处理这个错误,幸运的是它已经触底了。

我们有一个项目文件,让我们把它称为ProblemProj.vcxproj,它最初包含在SolutionA.sln中并且编译得很好。然后将该项目添加到另一个解决方案SolutionB.sln中,并在该解决方案中编译好。但是,在返回到SolutionA之后,"项目文件''已更名为"错误开始发生。

这是因为VS2010决定更改ProblemProj.vcxproj的ProjectGUID。 SolutionB.sln引用了正确的GUID,但SolutionA.sln仍然引用了旧的GUID。

你可以在.sln文件中找到它,如下所示:

< ProjectGuid> {271F161A-F26F-41D1-BDC8-FCF912A2F4FB}< / ProjectGuid>

可以通过以下方式解决问题:

1)通过在文本编辑器中打开并查找上述标记,手动编辑SolutionA.sln中的GUID。

2)从SolutionA.sln中删除项目并重新添加;这导致它拿起正确的GUID,幸运的是没有决定再次更改它。

3)恢复ProblemProj.vcxproj中的GUID更改(这将导致在SolutionB中发生完全相同的错误,因此除非SolutionB对您不重要,否则我不建议这样做。)< / p>

希望这有帮助。

答案 2 :(得分:5)

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

答案 3 :(得分:2)

在加载VS 2010 看起来很满意的解决方案后,我刚刚在VS 2012中遇到了同样的错误,原因略有不同。

原来,解决方案中的单个C ++项目引用了一个未命名的项目(只是一个Guid;没有名字,没有路径)。在加载此项目时,无法为解决方案中的任何项目构建,清理或显示引用。通过从解决方案中卸载项目直到它停止抱怨,我发现哪个项目有错误的引用。

答案 4 :(得分:1)

转到“项目参考”并检查其中一个参考项目是否带有标签(不可用)。

删除此引用并重新添加。

它促使我,这就是我找到解决方案来解决这个问题的方法。

答案 5 :(得分:0)

核对SDF。我尝试检查所有GUID和引用但没有成功。我删除了解决方案的SDF文件并将其清除。 (SDF是自动生成的数据库文件。)

答案 6 :(得分:-1)

VC2012 中可能有多个问题产生此错误。就我而言,发生错误是因为我没有将所有项目依赖项添加到项目树中。例如,我正在开发一个程序,我们称之为 MyProgram,它使用库 A 中的函数。库 A 项目被添加到项目树中。但是,项目库A依赖于库B中包含的函数。如果库B项目没有添加到MyProgram的项目中,当我尝试编译和链接时会产生这个错误。添加库 B 项目将解决此问题。

我猜从技术上讲,错误消息是正确的,但使用更详细的错误消息更容易诊断此问题,例如“项目 MyProgram 中缺少库 A 依赖项”。