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

时间:2013-11-25 06:40:14

标签: .net mef project-reference

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

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

26 个答案:

答案 0 :(得分:647)

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

答案 1 :(得分:72)

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

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

在Visual Studio 2015中 - 右键单击项目>属性>申请>目标框架

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

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

答案 2 :(得分:43)

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

右键单击项目>属性>申请>目标.NET框架

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

答案 3 :(得分:28)

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

    删除<目标> 可能有多行< / target> 通常位于.csproj的底部。

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

答案 4 :(得分:18)

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

Update-Package -Reinstall

答案 5 :(得分:8)

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

答案 6 :(得分:5)

Check NETFramework of the referred dll & the Project where you are adding the DLL. Ex: DLL ==> supportedRuntime version="v4.0" Project ==> supportedRuntime version="v3.0"

You will get warning icon. Solution : Make dll version consistence across.

答案 7 :(得分:4)

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

答案 8 :(得分:3)

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

答案 9 :(得分:2)

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

答案 10 :(得分:2)

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

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

答案 11 :(得分:2)

如果您显式引用已经隐式引用的项目,也会发生这种情况。

  • project a 引用 project b
  • project c 引用了 project a(它添加了隐式引用。展开并查看)
  • project c 引用了 project b

您将在项目引用下的 b 旁边看到一个感叹号。

答案 12 :(得分:2)

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

转到Visual Studio - > BUILD - >配置管理器

在" Active Solution Platform"在右上角放下(我的是VS 2012),如果它是#34;混合平台",根据您的参考第三方组件将其更改为适当的平台。

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

首先重建库项目,然后引用项目。 希望这会有所帮助。

答案 13 :(得分:1)

为了修复一些不起作用的东西,有时感觉删除某些库,这听起来有多奇怪。

无论如何,我相信问题太宽并且可能由不同因素导致 ,所以想要分享我的情况/解决方案。

我有一个项目(由客户带来)与Xamarin Forms和Telerik库。这件事通常与组件有关,库不包括到包文件夹中,也不能通过Nuget(付费的)提供。

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

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

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

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

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

答案 14 :(得分:1)

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

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

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

答案 15 :(得分:0)

如果您使用的是较新样式的 Sdk 项目,请将 OutputType 添加到您正在引用的项目中值为 Library 的 ProjectGroup 元素。 如果它在您引用的项目中并且引用了一个没有设置的项目,它也会让您感到悲伤。

答案 16 :(得分:0)

得到这个令人讨厌的黄色三角形的原因之一是您两次添加了对项目的引用,这意味着:

  • 参考文献一: MyProjectOne (其中已经包含对 MyProjectTwo 的引用)
  • 参考二: MyProjectTwo

通过删除参考2,黄色三角形将消失。

答案 17 :(得分:0)

根据@AljohnYamaro的回答(对不起,无法评论您的回答,尚无足够声誉的新帐户,但您对此表示反对),我检查了.csproj文件。

在我的文件中,除了标准项目参考:

<ProjectReference Include="..\ProjectA\ProjectA.csproj">
    <Private>true</Private>
    <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
</ProjectReference>

从引用的项目中也有直接链接到已编译的 dll

<ItemGroup>
    <Reference Include="ProjectA">
    <HintPath>..\ProjectA\bin\Debug\netcoreapp3.1\ProjectA.dll</HintPath>
    </Reference>
</ItemGroup>

删除第二个参考文献可以解决此问题。

答案 18 :(得分:0)

我创建了一个新的.sln,并将其放在子文件夹中。从.sln文件添加的位置缺少.nuget文件夹。将.nuget文件夹从根目录移到子文件夹中,新的.sln文件在那里为我解决了这个问题。

我稍后回来,将.sln文件添加到根目录并删除了该子文件夹。最初执行此操作也可以解决该问题。

答案 19 :(得分:0)

在解决方案中,我遇到了同样的问题,项目涉及.NET Core 3.1,.NET Standard 2.0和.NET Framework 4.8。问题出在最后一个。

为我解决此问题的技巧是将目标框架更改为.NET Framework 4.5,然后再更改为.NET Framework 4.8。

我完全不知道为什么这可以解决问题,但是确实可以。

IDE是Visual Studio 2019。

答案 20 :(得分:0)

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

答案 21 :(得分:0)

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

下的标记。

答案 22 :(得分:0)

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

右键单击您的项目>属性

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

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

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

更新SixLabors。

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

Convert ImageSharp.Image to ImageSharp.PixelFormats.Rgba32?

答案 23 :(得分:0)

在VS 2017中先清理然后构建

答案 24 :(得分:0)

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

答案 25 :(得分:0)

尝试关闭和打开VS。

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

相关问题