【问题标题】:Yellow Caution Icon/Glyph on Assembly Reference in Solution Explorer解决方案资源管理器中装配参考上的黄色警告图标/字形
【发布时间】:2015-03-04 19:19:57
【问题描述】:

我正在使用 NuGet 来管理依赖项。

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

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

比如我之前通过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>

【问题讨论】:

    标签: visual-studio-2013 nuget assembly-references packages.config


    【解决方案1】:

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

    1. 删除所有 NuGet 包(使用“包管理器”)
    2. 删除整个解决方案中任何挥之不去的损坏的程序集引用
    3. 将 NuGet 包重新添加到所有需要它们的项目中(再次使用包管理器)

    根据您的描述,听起来好像某些项目没有添加 NuGet 包,并且这些程序集可能是开发人员从 NuGet 包文件夹中“交叉引用”的。这是个错误。相反,必须将 NuGet 包添加到依赖于包的 所有 项目中。 (例如,您永远不会发现自己手动添加对 AutoMapper 的程序集引用,因为它是由 NuGet 为您管理的。)

    有时会出现错误,这些错误会出现在 nuget 提取之前,并且在解决方案资源管理器中选择引用节点会导致覆盖字形(黄色警告符号)自行删除(这意味着引用在加载后解决,通常通过'包恢复'。)

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

    HTH

    【讨论】:

      【解决方案2】:

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

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

      附言。我在 nuget 的网站上进行了搜索,以了解该包是否在 nuget 上可用,或者它是否是一个框架程序集。

      【讨论】:

      • 恢复选项不影响packages.config,而且从来没有。该问题的原因很可能与签入/合并错误有关(或添加对其他项目的 nuget 包的引用,而不是使用 nuget 包管理器来管理引用,这是使用 nuget 时管理引用的正确方法.)
      • 此外,您可以使用 Visual Studio 中的“包管理器”(不是控制台,而是完整的 UI)来搜索 nuget.org 包。您还可以使用“Reference Manager”对话框并选择“Assemblies->Framework”节点和对话框右上角的“Search Box”来查找框架提供的程序集。正确配置的包应该已经确定了它们的框架依赖关系。因此,删除所有引用然后从 nuget 添加依赖项通常比自己查找所有框架引用更快。
      【解决方案3】:

      您需要使用以下命令重新安装项目中的所有包:

      Update-Package -ProjectName MyProject -Reinstall
      

      【讨论】:

        【解决方案4】:

        在包管理器控制台中,选择您的默认项目

        然后

        Update-Package -reinstall
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-10-25
          • 2013-12-25
          • 1970-01-01
          • 2013-11-20
          • 2017-02-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多