找不到引用的组件“System”。 (或该事项的任何其他组成部分)

时间:2009-04-02 18:03:13

标签: visual-studio visual-studio-2008

问题:刚刚开始,解决方案之外的任何程序集的所有引用都无法解决,尝试构建时The referenced component 'SomeComponent' could not be found.。对于第三方组件(所有15个左右)以及所有.NET Framework程序集都会发生这种情况 - 基本上不是同一解决方案中的任何其他项目。

尝试加载其他一些解决方案会产生同样的问题。但是,创建一个新的WinForms项目没有问题。 (从头开始重新安装VS之前,它已经工作了,现在也无法工作。我创建了一个新的WinForms应用程序以及一个WPF应用程序,设计师也无法加载程序集。我尝试了目标3.5和2.0而没有运气。)

我尝试过的事情:

  • 修复Visual Studio安装
  • 重新启动计算机
  • 使用/ resetsettings标志启动VS
  • 系统还原到2天前,当它已知工作时
  • 卸载VS并重新安装
  • SVN的新结账

有没有人有这方面的经验,并知道如何重新开始工作?我最强大的Google-fu让我失望了,所以我在这里问。如果需要,可以标记社区维基。

更新: 我尝试“升级”Windows(到相同的版本),因为我没有看到Vista的修复选项,它仍然是一个禁忌。我重新安装了一切似乎相关的东西。到目前为止,看起来我只是需要备份和重新格式化,我想除非在明天某个时候出现解决方案。

UPDATE2: 我只是备份了数据并重新格式化了,所以我再也无法验证我还没有尝试过的任何想法,所以我只是让赏金自己到达最高投票答案并作为参考其他可能在以后遇到此问题的人。

12 个答案:

答案 0 :(得分:48)

我遇到了同样的问题。事实证明,NuGet出了问题。我删除了*.csproj - 文件的以下部分(在文本编辑器中打开)。这解决了我的问题:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
        <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

答案 1 :(得分:30)

就我而言,解决方案完全不同。看起来这是NuGet路径的一个问题(由于我将项目移动到另一个解决方案然后又回来了。

我编辑了.csproj并删除了对NuGet和相关包的所有引用。我还从解决方案文件夹中删除了packages文件夹。

系统组件然后神奇地再次出现。

答案 2 :(得分:7)

建议的下一个调试步骤:查看项目设计师:参考 - &gt;参考路径,以验证系统和第三方组件的路径是否正确显示。 (注意可能会像驱动器号一样滑过旧Mark I Eyeball的东西。)

答案 3 :(得分:3)

尝试使用fuslogvw进行装配负载记录后运行VS.在尝试查找和加载程序集时,您将能够看到运行时捕获的其他错误。

在Vista中,您必须以管理员身份运行fuslogvw,并且somtimes指定一个显式路径来保存日志。

您也可以尝试通过从另一个实例或.NET SDK附带的基本调试器附加Visual Studio来调试Visual Studio。

答案 4 :(得分:3)

不久前我也遇到过类似的问题。

我发现这个问题是由git在从分支跳转到分支时没有正确创建.exe的原因引起的(我们在路径中有nuget.exe,而在跳转分支时它被删除/添加)。当你试图运行nuget时,windows会对exe进行操作。

多次重置分支后,我最终得到了正常运行的exe。然后我注意到repo中所有目录的安全性已被重置,所以我不得不处理它。

毕竟,视觉工作室开始玩得很好。

希望这有助于某人!

答案 5 :(得分:1)

我不想这么说,但听起来这个系统非常糟糕。必须有一点,重新安装操作系统比继续尝试修复当前安装更快。

我希望你能以正确的精神接受这个......对不起。

答案 6 :(得分:1)

好吧,如果你点击错误,在VS 2012 RC中,然后调试它,错误就消失了......

答案 7 :(得分:1)

我知道这是一个老问题,但它仍然发生在最新版本的Visual Studio(2015)中。我以一种不同的方式修复它,当问到这个问题时可能无法恢复。基本上,它与VS无法找到.Net库包的事实有关。要修复最新版本的Visual Studio(2015):

  • 右键单击解决方案管理器中的解决方案。选择“管理解决方案的NuGet包...”
  • 在NuGet窗口中,转到“已安装”。
  • 如果您有与Microsoft.Net相关的内容,例如“Microsoft.NetCore.UniversalWindowsPlatform”,请记住该名称并卸载该软件包。
  • 现在转到浏览标签,找到包并重新安装。不要忘记选择正确的项目。
  • 一切都应该好了。

我希望这有助于某人!

答案 8 :(得分:0)

在黑暗中拍摄,但我遇到了同样的(类似)问题。我遇到的问题与64位机器和运行混合了64位和32位第三方dll的项目有关。解决方案是确保我有正确的位(32v64),然后让项目以32位模式构建:项目属性&gt;构建&gt;平台目标:x86。

另一次发生这种情况我不得不删除所有的64位dll并重新安装32位dll的

HTH的

答案 9 :(得分:0)

使用ILDASM检查输出以确保引用正确显示 - 将它们与可行的程序集进行比较,并查看是否有任何内容跳出来。

答案 10 :(得分:0)

在同一解决方案中引用其他项目也可能存在问题。我只想构建一个项目,但是在另一个项目中得到了关于引用的消息。虽然其他项目中的问题是正确的,但我认为该消息不正确:

  1. 我没想到有关另一个项目的消息(另一个项目没有依赖关系,所以它'不需要'构建)
  2. 我无法“解释”它,因为它没有提及它的项目。

答案 11 :(得分:0)

.nuget文件夹丢失。在.nuget文件夹中添加nuget文件(通常为3个文件)。打开解决方案,并且在引用上没有警告。我的子模块具有nuget引用,当我提取最新版本时,解决方案需要在项目文件夹中使用.nuget文件夹。 即

 project
   /.nuget
   /submodule
     /.nuget