代码之家  ›  专栏  ›  技术社区  ›  Davy8

找不到引用的组件“system”。(或与此相关的任何其他组件)

  •  30
  • Davy8  · 技术社区  · 15 年前

    问题: 刚从今天开始,对解决方案之外的任何程序集的所有引用都无法解析,因为 The referenced component 'SomeComponent' could not be found. 尝试构建时。这适用于第三方组件(全部15个或更多)以及所有.NET框架程序集——基本上是同一解决方案中的其他项目。

    尝试加载其他一些解决方案会产生相同的问题。然而,创建一个新的WinForms项目没有问题。(记住,在重新安装vs之前它是有效的,现在也不起作用了。我创建了一个新的winforms应用程序和一个wpf应用程序,设计器也无法加载程序集。我试着瞄准3.5和2.0,但没有运气。)

    我尝试过的事情:

    • 修复Visual Studio安装
    • 重新启动计算机
    • 已启动vs,带有/resetsettings标志
    • 系统还原到2天前已知其工作时
    • 卸载vs并重新安装
    • 从SVN新签出

    有没有人对此有任何经验,并且知道如何让这项工作重新开始?我最强大的google fu让我失望了,所以我在这里问。如果需要,可以标记社区wiki。

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

    更新2: 我只是备份了数据并重新格式化了,所以我再也无法验证我还没有尝试过的任何想法,所以我将把奖金留给最热门的投票答案,作为以后可能有这个问题的任何人的参考。

    11 回复  |  直到 5 年前
        1
  •  6
  •   chaos    15 年前

    建议的下一个调试步骤:检查 项目设计器:引用->引用路径 验证系统和第三方组件的路径是否正确显示。(注意那些可能滑过旧标记的东西,我的眼球像驱动器字母一样。)

        2
  •  44
  •   CoderPi    8 年前

    我也有同样的问题。结果发现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>
    
        3
  •  29
  •   Nanki    10 年前

    在我的例子中,解决方案完全不同。看起来这是nuget路径的问题(由我将项目移动到另一个解决方案,然后再次返回引起)。

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

    然后系统组件神奇地重新出现。

        4
  •  3
  •   Paul Alexander    15 年前

    在使用fuslogvw进行装配负载日志记录后尝试运行vs。当运行时试图定位和加载程序集时,您将能够看到它捕获的其他错误。

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

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

        5
  •  3
  •   MethodsofSanity    11 年前

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

    我发现这个问题是由Git在从一个分支跳到另一个分支时没有正确创建.exe引起的(我们在一个路径中有nuget.exe,在跳分支时它会被删除/添加)。当您尝试运行nuget时,Windows会在exe上抛出fit。

    在重新设置了多次分支之后,我最终得到了正确运行的exe。然后我注意到repo中所有目录的安全性都被重置了,所以我必须处理这个问题。

    在这一切之后,Visual Studio开始表现得很好。

    希望这能帮助别人!

        6
  •  2
  •   Marc Gravell    15 年前

    我不想这么说,但听起来这个系统已经相当老生常谈了。重新安装操作系统必须比继续尝试修复当前安装更快。

    我只是希望你把这个放在正确的精神上…对不起的。

        7
  •  1
  •   Harry    12 年前

    好吧,如果你点击错误,在vs 2012 rc中,然后调试它,错误就消失了…

        8
  •  1
  •   MosGeo    8 年前

    我知道这是一个老问题,但在最新版本的Visual Studio(2015)中仍然存在。我以一种不同的方式解决了这个问题,当被问到这个问题时,这个问题可能还没有回来。基本上,这与VS找不到.NET库包有关。要在最新版本的Visual Studio(2015)中修复:

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

    我希望这能帮助别人!

        9
  •  0
  •   Metro Smurf    15 年前

    在黑暗中拍摄,但我遇到了同样的问题。我遇到的问题与拥有64位计算机和运行混合了64位和32位第三方DLL的项目有关。解决方案是确保具有正确的位(3264),然后以32位模式生成项目:项目属性>生成>平台目标:x86。

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

    H氏

        10
  •  0
  •   Coderer    15 年前

    使用ildasm检查输出,以确保引用正确显示——将它们与正常工作的程序集进行比较,并查看是否有任何东西跳出您的视线。

        11
  •  0
  •   Yahoo Serious    13 年前

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

    1. 我没有预料到关于另一个项目的消息(另一个项目没有依赖关系,因此不需要构建它)
    2. 我不能“解释”它,因为它没有提到它所涉及的项目)。