被引用的项目x不存在。

3

大家好,

我把一个项目的解决方案从vs2008升级到vs2010。但是现在我有一个奇怪的问题,在3个解决方案中引用了同一个项目,在其中2个解决方案中引用出了问题。

我能够添加引用(项目引用),但是构建时会收到警告,指引用的项目x不存在,并且还需要添加引用的错误。

我已经尝试删除和重新添加项目以及引用,但是没有结果。

enter image description here

enter image description here

有人有什么想法吗?

问候,

乔纳森


如果BrokenGlass的答案对您无效,我也遇到过同样的错误-通过删除损坏的引用、重建引用项目,然后再添加引用来解决。但是BG可能是正确的。 - AllenG
6个回答

5

我曾遇到类似的问题,其他解决方法都无效。对我有效的方法是在文本编辑器中打开项目文件。发现有重复的库引用,一个作为项目引用,另一个作为dll引用。我删除了两个引用。然后我在Visual Studio中打开了该解决方案,并将引用重新添加为项目引用。只添加了一个引用,警告停止出现。


2
我也遇到了类似的问题。我一直在收到错误提示,但是在引用分支中并没有相应的引用。所以我也打开了csproj文件,发现有10个对不存在文件夹的引用!我把它们全部删除了,问题得到了解决。 - Andrew

3
尽管我在从VS 2008迁移到VS 2010的所有项目中正确引用.NET 3.5(对System程序集的所有引用都使用运行时版本v2.0),但我遇到了完全相同的问题。
然而,奇怪的是,只有当我的解决方案(以及此解决方案子文件夹中的项目)位于某些路径中时,才会出现错误...我可以通过移动项目或重命名项目(仅更改项目文件,而不是输出二进制文件)来“解决”问题?!
在项目中双击引用会正确打开对象浏览器,在其中可以找到引用项目中定义的所有工件!
我开始删除项目中的所有内容(类、资源、引用等)。最后,我只剩下两个项目(A引用B),没有其他引用,并且每个项目中只有一个空类。我仍然收到消息“引用的项目'..\B\B.csproj'不存在。”突然之间,尝试将源代码复制到另一台PC上,然后再次复制回原始路径(这是解决问题的黑魔法),我收到消息“无法复制。结果文件名太长”。
奇怪²!!!我在我的PC上删除了所有东西,然后再次从另一台PC复制回源代码。它成功地通过了!我再次从另一台PC复制回来(现在覆盖现有的本地副本),然后再次收到消息“无法复制。结果文件名太长”。因此,只有在覆盖现有文件时才会出现问题。
我发现只有当现有文件为“只读”标志时才会出现错误。删除只读标志解决了此问题。但是,此错误可能是我最初遇到的问题的根本原因:“引用的项目'..\B\B.csproj'不存在。”
因此,我决定检查项目路径长度是否是问题,方法是重命名其中一个文件夹而不更改总长度!错误仍然发生(找不到引用)。
接下来(我知道,你已经认为我很疯狂或很愚蠢。但是各种同事都验证了这些步骤),我将解决方案复制到新文件夹中(具有更长的路径)。惊奇的是,错误不再发生!!!
但是,将解决方案移回具有相同长度(可能是另一个名称)的文件夹会重新引入错误(在“清除”解决方案之后,否则obj中的元数据有助于解决引用)。
我还能通过将项目文件B重命名而不是路径中的文件夹来重现此错误。更长或更短的项目文件名可以解决此问题。
项目文件路径长度为“195”: D:\ TFS_Builds \ 5 \ XXXX 1.1 \ Release 1.11 \ Sources \ Release 1.11 \ Exception Repository \ XXXXXX.Framework.ExceptionHandling.Repository.ServiceHost \ XXXXXX.Framework.ExceptionHandling.Repository.ServiceHost
此外,由于我在尝试确定问题的根本原因时可以非常有创意,因此我在C:\上创建了完全相同的路径,并将解决方案放在那里...发生了相同的错误。

我之前一直没有找到(直到现在)这个问题的原因,已经在MSDN上发布了一个问题:http://social.msdn.microsoft.com/Forums/en/msbuild/thread/f0eb6aed-5854-4678-9546-09c1a7705e30


底部的链接对我来说解决了这个问题!!非常感谢! - user555265

3
请确保您的项目未将“.NET Framework 4 Client Profile”作为目标框架,这是这些问题最常见的来源。您可以在项目属性下的“目标框架”中检查此项。
来自MSDN
如果您的目标是.NET Framework 4 Client Profile,则无法引用不在.NET Framework 4 Client Profile中的程序集。相反,您必须将目标设置为.NET Framework 4。有关更多信息,请参见.NET Framework定位错误的故障排除。

0

我曾经遇到过同样的问题。 解决方法是先单独打开每个参考项目。VS会要求修复一些文件,允许它这么做。

然后再打开顶层项目,就可以正常工作了。

显然,这是由创建原始项目的VS版本引起的问题。

祝好运!


0

检查以下内容的长度:

  1. 引用项目目录的路径
  2. 引用的项目的相对路径

如果这些路径加起来恰好为259个字符,您将在Path.GetFullPath的.NET实现中遇到一个bug,导致VisualStudio 2010表现得好像引用的项目不存在。


0
这里是解决我的问题的方法: 我有一个项目引用了 "Utilities.Proxy3.5",会给我以下警告:

"The referenced project '..\..\Utilities.Proxy3.5\Utilities.Proxy3.5.csproj' does not exist."

将项目文件夹和项目文件重命名为 "Utilities.Proxy35" 并重新添加引用即可解决该问题。注意:我只是删除了数字3和5之间的一个点。

希望这能帮到某个人。


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