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

问题描述 投票:296回答:15

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

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

.net mef project-reference
15个回答
653
投票

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


2
投票

将我的2美分加到@ kad81答案中,

转到Visual Studio - > BUILD - > Configuration Manager

在右上角的“Active Solution Platform”下拉(我的是VS 2012),如果它是“Mixed Platforms”,则根据您的参考第三方程序集将其更改为适当的平台。

然后在列表中的每个项目中,确保为所有项目选择相同的平台。 (如果x86不存在,则选择“”,然后您可以选择“x86”。)

首先重建库项目,然后引用项目。希望这可以帮助。


2
投票

在Asp.net核心中,如果您更改项目名称空间或名称,它会显示警报。要删除此类警报,您只需卸载项目并再次加载它。如果问题仍然存在,则意味着您无法找到您的装配参考。


1
投票

我有这些图标的原因不同。我们为所有项目(近100个)提供了一个大解决方案。我对我感兴趣的项目进行了小选,并提出了一个新的解决方案。但是项目引用的引用而不是对已编译的dll的引用....

经过一些研究,我发现this link on GitHub解释了这是VS2015中的新行为。

在GitHub页面上,他们解释了将项目引用转换为二进制引用的解决方法。


1
投票

为了修复一些不起作用的东西,有时删除一些库是有道理的,听起来有多奇怪。

无论如何,我认为问题太广泛,可能是由不同的因素造成的,所以想分享我的情况/解决方案。

我有一个项目(由客户带来)与Xamarin Forms和Telerik库。事情通常与组件有关,这些组件不包含在packages文件夹中,也不能通过Nuget(付费的)获得。

整个项目参考文献都是“黄色”,看起来非常可怕。

解决方案只是删除那些Telerik引用(包括使用它的代码中的一些控件)。在此之后,所有参考文件神奇地得到了他们共同的正常灰色,并且错误(大多数)消失了。

“主要” - 因为“所有红色”错误消息有关“元素未在任何地方定义”有时会发生。这很奇怪,并带来不便,但我仍然可以编译和运行项目:只需要清理解决方案,重新启动Visual Studio,祈祷一点,再次清理,删除obj / bin文件夹,重新启动,然后它效果很好。

关键是删除不可用的库引用,因为错误消息绝对是另一回事。 (例如,“Xamarin.Build.Download.XamarinDownloadArchives未找到或无法找到某些东西”等等,但这可能意味着您没有可用的参考资料。

然后删除packages文件夹,重新加载/重新打开项目/解决方案,转到“Manage Nuget Packages”并单击“Restore”按钮。


1
投票

尝试关闭并打开VS.

看起来很傻,但是经过1小时的上面跟踪,发现一切都排好了。我重启VS 2017,问题就不复存在了。


0
投票

我也面临同样的问题,但我的情况与上面的情况略有不同。我试图打开在不同计算机上创建的项目。我发现添加引用时没有更新package文件夹的路径,因此重新启动VS,更改.NET版本或任何提到的建议都无法解决问题。我在notepad ++中打开了csproj文件并更正了package文件夹的所有相对路径。然后;所有的警告都消失了。希望能帮助到你。


0
投票

在VS 2017做一个清洁,然后建立


72
投票

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

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

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

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

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


43
投票

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

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

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


29
投票
  1. 确保每个项目的所有版本都相同,单击每个项目,然后在此处查看版本项目>属性>应用程序>目标.NET框架
  2. 一个。转到工具> Nuget包管理器>包管理器控制台类型更新 - 包 - 重新安装(如果不工作继续到2.b) 湾删除<Target>可能有多行</ Target>,通常位于.csproj的底部。
  3. 保存,加载和构建解决方案。

19
投票

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

Update-Package -Reinstall

8
投票

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


5
投票

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

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


4
投票

自问这个问题已经很久了,但是如果有人仍然感兴趣 - 我最近遇到了类似的问题。我正在使用VS 2008编译一个C#.net项目。我发现VS找不到那些引用的程序集。当我双击VS时刷新引用并删除其中一些[编辑:它现在可以找到]的图标。对于其余的引用,我必须编译各自的程序集。


4
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.