为什么在添加对MEF插件项目的引用时会出现警告图标?

Pro*_*ofK 308 .net mef project-reference

我希望通过直接引用插件项目并实例化插件类来测试插件的核心类.当我创建一个测试Console App项目并向插件项目添加项目引用时,我会在References列表中的引用旁边看到一个警告图标(带有感叹号的黄色三角形).

当我改为添加对dll的引用时,插件的程序集构建输出,我没有得到这样的警告.这个警告可以告诉我什么?

kad*_*d81 663

正如问题的评论中所提到的,项目之间不同的.NET Framework版本可能会导致这种情况.检查新项目的属性以确保未使用其他默认版本.

  • 我正在使用VS 2015,问题仍然存在.直到我来到这里,我已经失去了半个小时. (16认同)
  • 我还需要知道为什么visual studio接受添加那些引用呢? (13认同)
  • 你认为现在他们知道图标不是一个有意义的警告...... (11认同)
  • 甚至没有任何悬停文本或构建错误解释问题是什么 (10认同)
  • 可以确认这是问题的根源.还可以确认具有更新15.3的Visual Studio 2017仍未解决实际上未显示有意义消息的问题.很烦人. (5认同)
  • @matao同意!很讨厌我无法获得有关错误的任何细节...... (3认同)
  • 我很好奇为什么 VS 团队在近十年之后仍然没有弄清楚警告图标可以从工具提示中受益。 (3认同)
  • 我必须重新启动 Visual Studio,以便在修复项目后警告图标消失。 (2认同)

k-d*_*dev 72

遇到了与ASP.Net Web App和两个需要在Web App中引用的库类项目相同的问题.我没有提供有关构建失败原因和引用无效的信息.

解决方案是确保所有项目都具有相同的目标框架:

在Visual Studio 2015中 - 右键单击项目>"属性">"应用程序">"目标框架"

保存,清理和重建解决方案.项目引用不应再显示为黄色警告,解决方案将编译.

我的Web应用程序的目标是.Net 4.5,而其他两个依赖的库类项目的目标是.Net v4.5.2


use*_*181 44

对于要一起使用的两个(或所有)项目:

右键单击项目> Properties> Application> Target .NET framework

确保您的两个(或所有)项目都使用相同的.NET框架版本.


Alj*_*aro 36

  1. 确保每个项目的所有版本都相同,单击每个项目,然后在此处查看版本项目>属性>应用程序>目标.NET框架
  2. 一个.转到工具> Nuget包管理器>包管理器控制台类型更新 - 包 - 重新安装(如果不工作继续到2.b)

    删除<Target> 可能有多行 </ Target>,通常位于.csproj的底部.

  3. 保存,加载和构建解决方案.

  • 感谢您的帮助,Visual Studio 中关于 .Net 版本的良好错误消息不会在这里误入歧途! (2认同)
  • 其他答案中没有指出的第 2.b 部分对我来说至关重要!2.b 删除 &lt;Target&gt; Maybe with multiple lines&lt;/Target&gt; 通常位于 .csproj 的底部。 (2认同)
  • 第 2.b 部分完全疯狂,但它有效!谢谢 (2认同)
  • 谢谢 2.b 也为我解决了这个问题。我自己永远也想不到这一点。 (2认同)

Nit*_*ole 20

重新安装当前解决方案的所有项目中的所有包:

Update-Package -Reinstall
Run Code Online (Sandbox Code Playgroud)

  • 它删除了所有软件包,安装了它们,然后黄色三角形又回来了。 (3认同)
  • 虽然这个建议没有直接解决我的问题,但它指出了我的方案的正确方向.对于那些可能会有所帮助,其实我不得不改变我的NuGet包源V3的更新,包找到正确的版本下载:https://docs.nuget.org/consume/package-manager-dialog#package-来源 (2认同)

Ale*_*ens 9

尝试关闭和打开 VS。

看起来很傻,但在按照上述步骤进行 1 小时后,发现一切都排好了。我重新启动了 VS 2017,问题就消失了。

  • 为我工作。不管有时是否愚蠢,Visual Studio 会感到困惑,并且它的缓存会被搞砸。感谢您的建议 - 讨厌这样做,因为我觉得愚蠢,认为它会起作用,但“哎呀”是什么 - 经过一个小时的其他事情后,我可能还可以,tada它起作用了 (4认同)

Roh*_*n K 8

确保您的项目针对相同的框架版本.大多数情况下,原因是当前项目(您要添加另一个项目的引用)指向与其他项目不同的.net框架版本.


Jus*_*tin 7

对我来说,我在 .NET Framework 4.7.1 控制台应用程序中引用 .NET Standard 2.0 类库时遇到了这个问题。是的,框架是不同的,但它们是兼容的(.NET Standard 应该与 .NET Core 和 .NET Framework 兼容。)我尝试清理、重建、删除和阅读项目引用等......但没有成功. 最后,退出 Visual Studio 并重新打开解决了该问题。


Sum*_*are 5

检查引用的dll的NETFramework和要添加DLL的项目.例如:DLL ==> supportedRuntime version ="v4.0"Project ==> supportedRuntime version ="v3.0"

你会收到警告图标.解决方案:使dll版本保持一致.


Ria*_*Zyl 5

将 Visual Studio 2019 与所有针对 .Net Core 3.1 的项目结合使用,解决方案是:

  1. 清理/构建/重建。
  2. 重新启动 Visual Studio 2019