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


321

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

当我改为添加对dll(插件的程序集生成输出)的引用时,没有得到这样的警告。这个警告可能试图告诉我什么?


8
在大多数情况下,警告三角形会在错误窗口中带有工具提示或(失败)提示。推测这两个项目具有不兼容的依赖关系。
Damien_The_Unbeliever

2
尝试构建时控制台中是否有任何警告?
Jite

231
我已经在针对不同.net框架版本的项目中看到了这一点
mhand 2014年

4
@OP您可以选择kad81的答案作为正确答案吗
Andy

5
总是让我。向.NET 4解决方案中添加一个新项目,默认值为4.5。
罗宾·法兰西

Answers:


674

如问题注释中所述,项目之间的.NET Framework版本不同可能会导致此问题。检查新项目的属性,以确保未使用其他默认版本。


13
我还需要知道的是为什么Visual Studio接受然后添加这些引用?
安德斯·林登

16
我正在使用VS 2015,问题仍然存在。到我来之前,我已经失去了半个小时。
Alisson '16

14
甚至没有任何悬停文本或解释该问题是什么的构建错误
matao

6
可以确认这是问题的根源。还可以确认Visual Studio 2017更新15.3仍未解决未实际显示有意义消息的问题。很烦人。
格雷格·泰勒

4
@matao同意!令人讨厌的是我无法获得有关该错误的任何详细信息……
nterry

74

ASP.Net Web App和两个需要在Web App中引用的库类项目遇到相同的问题。我没有提供任何信息说明为什么构建失败并且引用无效。

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

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

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

我的Web应用程序以.Net 4.5为目标,而其他两个相关库类项目则以.Net v4.5.2为目标


44

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

右键单击项目>属性>应用程序> Target .NET Framework

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


完美,为我工作!我有一个使用.NET Framework 4.5.2的MVC项目。我引用它的类库是.NET Framework 4.7。
Mike Upjohn

有人会认为,添加到现有解决方案中的新项目足够聪明,可以知道什么版本,但是遗憾的是事实并非如此。
罗恩

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

    b。这是至关重要的,但可行的最大可能性删除<Target> 可能有多行 </ Target>,通常在.csproj的底部找到。

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


1
为此,在Visual Studio中不会出现有关.Net版本的错误消息,请不要误入歧途!
colmde '18年

1
@colmde有趣的是,如果您清洁解决方案,则输出窗口将显示以下消息:'使用.NetFramework XXX而不是目标框架.NetFramework XXX还原了程序包。该软件包可能与您的项目不完全兼容”
elszeus

1
在其他答案中没有提到的2.b部分对我来说至关重要!2.b删除<目标>可能带有多行</目标>,通常位于.csproj的底部。
shelbypereira

1
2.b部分是完全疯狂的,但是它起作用了!谢谢
Elo

1
谢谢2.b也帮了我大忙。永远不会自己弄清楚这一点。
亨里克·克劳森

23

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

Update-Package -Reinstall

2
尽管此建议并不能直接解决我的问题,但可以为我的方案指明正确的方向。对于那些可能有帮助的应用程序,我实际上不得不将我的NuGet包源更改为Update-Package v3,以找到要下载的正确版本:docs.nuget.org/consume/package-manager-dialog#package-sources
John Lee

1
它删除了所有软件包,安装了它们,然后出现了黄色三角形。
安德斯·林登

8

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


5

检查引用的DLL和要在其中添加DLL的项目的NETFramework。例如:DLL ==> supportedRuntime版本=“ v4.0”项目==> supportedRuntime版本=“ v3.0”

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


5

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


4

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


4

在@ kad81答案中加上2美分,

转到Visual Studio->构建->配置管理器

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

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

首先重建库项目,然后再参考项目。希望这可以帮助。


4

尝试关闭和打开VS。

似乎很傻,但是在遵循上述步骤并找到所有内容后1小时后,一切正常。我重新启动了VS 2017,问题消失了。


1
为我工作。有时是愚蠢的(或不是愚蠢的),Visual Studio会感到困惑,并且缓存会搞砸。感谢您提出建议-讨厌这样做,因为我觉得自己很愚蠢,认为它可以工作,但是“麻烦”是什么-在经过一小时的其他工作之后,我也想办法解决了这一问题
Blake

2

在Asp.net core中,如果您更改项目名称空间或名称,它会显示警报。要删除此类警报,您只需卸载项目并再次加载即可。如果问题仍然存在,则意味着您找不到汇编参考。


1

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

经过研究后,我在GitHub上找到了此链接,这说明了VS2015中的新行为。

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


1

要修复某些无法正常工作的东西,有时会删除一些库是有道理的,这听起来并不奇怪。

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

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

整个项目参考文献为“黄色”,看上去非常可怕。

溶液只是以除去那些Telerik的引用(包括其使用在代码几个对照)。此后,所有引用都神奇地得到了它们通常的普通灰色,错误(大部分)消失了。

“最多”-因为有时还会出现有关“元素未在任何地方定义”的“全红”错误消息。这很奇怪,带来了不便,但我仍然能够编译并运行项目:只需清理解决方案,重新启动Visual Studio,稍作祈祷,再次清理,删除obj / bin文件夹,再次重新启动,就可以了效果很好。

关键是删除不可用的库引用,因为错误消息绝对是另一回事。(例如,类似“找不到Xamarin.Build.Download.XamarinDownloadArchives或找不到东西”之类的东西,但是那可能意味着您没有可用的参考。

然后删除程序包文件夹,重新加载/重新打开项目/解决方案,转到“管理Nuget程序包”,然后单击“恢复”按钮。


1

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

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

0

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



0

谢谢大家的帮助。以下是我如何解决问题的细分:

右键单击您的项目>属性

在“应用程序”下,更改目标框架。在我的情况下,ImageSharp使用的是.Net 4.6.1。您可以在packages.config中找到它。

转到您的项目参考。您会注意到SixLabors有一个黄色三角形。您必须更新NuGet软件包。

右键单击参考>管理NuGet软件包。

更新SixLabors。

您可能会进行少量代码更新(请参见下文),但这解决了我的问题。

将ImageSharp.Image转换为ImageSharp.PixelFormats.Rgba32?


0

在Visual Studio 2019中,我的项目目标框架之一是.net核心,但它引用的目标框架是.net标准的另一个项目。我将所有项目更改为引用.net标准,并且图标消失了。要查看您的项目是什么,请右键单击它,然后单击属性,然后查看Target框架。您也可以正常单击项目本身,然后查看<PropertyGroup>下的<TargetFramework>标记。


0

在多项目解决方案中,如果其他所有操作都失败,请执行以下操作:在启动项目中,检查。依赖关系->程序集,然后查看是否存在错误的引用项目。删除并重新构建。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.