解决方案资源管理器中的装配参考上的黄色警告图标/字形

时间:2015-03-04 19:19:58

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

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

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

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

references

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

4 个答案:

答案 0 :(得分:1)

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

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

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

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

    HTH

答案 1 :(得分:0)

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

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

PS。我在nuget的网站上使用搜索来查看该包是否可用于nuget,或者它是否是框架程序集。

答案 2 :(得分:0)

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

Update-Package -ProjectName MyProject -Reinstall

答案 3 :(得分:0)

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

然后

Update-Package -reinstall