Visual studio 2013 解决方案资源管理器中程序集引用上的黄色警告图标/图示符

Visual studio 2013 解决方案资源管理器中程序集引用上的黄色警告图标/图示符,visual-studio-2013,nuget,assembly-references,packages.config,Visual Studio 2013,Nuget,Assembly References,Packages.config,我正在使用NuGet管理依赖项 我为我的解决方案创建了一个新的Git克隆,并注意到程序集引用问题 我已启用程序包还原并检查了设置,但在各种程序集引用上仍有这些黄色警告图标: 例如,我之前通过NuGet添加了AutoMapper,为什么它在这里被破坏了,为什么它没有显示在我的packages.config: <?xml version="1.0" encoding="utf-8"?> <packages> <package id="bootstrap" vers

我正在使用NuGet管理依赖项

我为我的解决方案创建了一个新的Git克隆,并注意到程序集引用问题

我已启用程序包还原并检查了设置,但在各种程序集引用上仍有这些黄色警告图标:

例如,我之前通过NuGet添加了AutoMapper,为什么它在这里被破坏了,为什么它没有显示在我的
packages.config

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="bootstrap" version="3.0.0" targetFramework="net45" />
  <package id="EntityFramework" version="6.1.1" targetFramework="net45" />
  <package id="jQuery" version="1.10.2" targetFramework="net45" />
  <package id="Modernizr" version="2.6.2" targetFramework="net45" />
</packages>

这通常意味着您在项目中的引用引用了磁盘上找不到的程序集。要纠正此问题,最直接的解决方案是注意存在哪些引用,删除它们,然后重新添加它们。由于您使用NuGet来管理依赖项,因此您的工作要轻松得多,您只需:

  • 删除所有NuGet包(使用“包管理器”)
  • 在整个解决方案中删除任何残留的损坏程序集引用
  • 将NuGet包重新添加到所有需要它们的项目中(再次使用包管理器)
  • 根据您的描述,听起来好像有些项目没有添加NuGet软件包,可能这些程序集是由开发人员从NuGet软件包文件夹“交叉引用”的。这是一个错误。相反,必须将NuGet包添加到依赖于这些包的所有项目中。(例如,您永远不会发现自己手动向AutoMapper添加程序集引用,因为它是由NuGet为您管理的。)

    有时在nuget获取之前会出现错误,在解决方案资源管理器中选择引用节点将导致覆盖图示符(黄色警告符号)自行删除(这意味着该引用在加载后已解决,通常通过“包还原”)

    这通常是由于项目作者在非标准位置创建了对程序集的不正确/直接引用,因此包还原无法解决引用问题,并且引用通常在包更新后中断。


    HTH

    我手动删除了所有旁边有黄色标记的引用,然后一个接一个地添加回去。这样,它们也开始出现在
    packages.config

    我认为他们之前没有显示在
    packages.config
    中的原因是因为我在开发的晚些时候打开了[Restore nuget packages]选项。如果我一开始就这样做,我相信它们会出现在
    packages.config


    另外,我使用nuget网站上的搜索查找该软件包是否在nuget上可用,或者它是否是一个框架程序集。

    您需要使用以下方法重新安装项目中的所有软件包:

    Update-Package -ProjectName MyProject -Reinstall
    

    在PackageManager控制台中,选择默认项目

    然后


    还原选项不会影响
    packages.config
    ,也不会影响。问题的原因很可能与签入/合并错误有关(或者向其他项目的nuget包添加引用,而不是使用nuget包管理器管理引用,这是使用nuget管理引用的正确方法)。此外,您可以在Visual Studio中使用“包管理器”(不是控制台,而是完整的UI)来搜索nuget.org包。您还可以使用“引用管理器”对话框,选择“程序集->框架”节点和“搜索框”在对话框的右上角,查找框架提供的程序集。正确配置的包应该已经标识了它们的框架依赖项。因此,删除所有引用,然后从nuget添加依赖项通常比自己查找所有框架引用更快。
    Update-Package -reinstall