我希望通过直接引用插件项目并实例化插件类来测试插件的核心类。当我创建一个测试控制台应用程序项目并向插件项目添加项目引用时,我会在“引用”列表中的引用旁边看到一个警告图标(带感叹号的黄色三角形)。
当我改为添加对 dll 的引用时,插件的程序集构建输出,我没有收到这样的警告。这个警告想告诉我什么?
我希望通过直接引用插件项目并实例化插件类来测试插件的核心类。当我创建一个测试控制台应用程序项目并向插件项目添加项目引用时,我会在“引用”列表中的引用旁边看到一个警告图标(带感叹号的黄色三角形)。
当我改为添加对 dll 的引用时,插件的程序集构建输出,我没有收到这样的警告。这个警告想告诉我什么?
如问题评论中所述,项目之间不同的 .NET Framework 版本可能会导致此问题。检查新项目的属性以确保未使用不同的默认版本。
一个 ASP.Net Web App 和两个需要在 Web App 中引用的库类项目遇到了同样的问题。我没有提供关于构建失败和引用无效的原因的信息。
解决方案是确保所有项目都具有相同的目标框架:
在 Visual Studio 2015-右键单击项目 > 属性 > 应用程序 > 目标框架
保存、清理和重建解决方案。项目引用不应再显示为黄色警告,解决方案将编译。
我的 Web 应用程序的目标是 .Net 4.5,而其他两个依赖库类项目的目标是 .Net v4.5.2
对于您要一起使用的两个(或所有)项目:
右键单击项目 > 属性 > 应用程序 > 目标 .NET 框架
确保您的两个(或所有)项目都使用相同的 .NET 框架版本。
确保每个项目的所有版本都相同单击每个项目并在此处查看版本 Project > Properties > Application > Target .NET framework
一个。转到工具 > Nuget 包管理器 > 包管理器控制台类型Update-Package -Reinstall(如果不工作继续2.b)
湾。这很关键,但最大的可能是可行的。删除 <Target> Maybe 与多行< /Target>通常在 .csproj 的底部找到。
保存、加载和构建解决方案。
重新安装当前解决方案的所有项目中的所有包:
Update-Package -Reinstall
确保您有针对相同框架版本的项目。大多数情况下,原因是当前项目(您在其中添加另一个项目的引用)指向与其他项目不同的 .net 框架版本。
尝试关闭和打开 VS。
看起来很傻,但是在按照上述操作 1 小时后发现一切都排好了。我重新启动了 VS 2017,问题就消失了。
对我来说,在 .NET Framework 4.7.1 控制台应用程序中引用 .NET Standard 2.0 类库时遇到了这个问题。是的,这些框架是不同的,但它们是兼容的(.NET Standard 应该与 .NET Core 和 .NET Framework 兼容。)我尝试清理、重建、删除和读取项目引用等......但没有成功. 最后,退出 Visual Studio 并重新打开解决了该问题。
检查引用的 dll 的 NETFramework 和添加 DLL 的项目。例如:DLL ==> supportedRuntime version="v4.0" Project ==> supportedRuntime version="v3.0"
你会得到警告图标。解决方案:使 dll 版本一致。
自从提出这个问题以来已经有很长时间了,但如果有人仍然感兴趣 - 我最近遇到了类似的图标。我正在使用 VS 2008 编译一个 C#.net 项目。我发现 VS 无法找到这些引用的程序集。当我双击 VS 刷新了引用并删除了其中一些图标[编辑:它现在可以找到]。对于剩余的引用,我必须编译相应的程序集。
将我的 2 美分添加到@kad81 答案中,
转到 Visual Studio -> 构建 -> 配置管理器
在右上角的“活动解决方案平台”下拉菜单中(我的是 VS 2012),如果是“混合平台”,请根据您的参考第三方程序集将其更改为适当的平台。
然后在列表中的每个项目中,确保为所有项目选择相同的平台。(如果x86不存在,则选择“”,则可以选择“x86”。)
首先重建库项目,然后再引用项目。希望这可以帮助。
如果您显式引用已经隐式引用的项目,也会发生这种情况。
IE
您将在项目引用下的 b 旁边看到一个感叹号。
将 Visual Studio 2019 与所有面向 .Net Core 3.1 的项目一起使用,解决方案是:
在 Asp.net 核心中,如果您更改项目名称空间或名称,它有时会显示警报。要删除这种警报,您只需卸载项目并再次加载它。如果问题仍然存在,则意味着您找不到您的程序集参考。
在针对 .NET Core 3.1、.NET Standard 2.0 和 .NET Framework 4.8 的项目的解决方案中,我遇到了同样的问题。问题在于最后一个。
为我解决问题的技巧是将目标框架更改为 .NET Framework 4.5,然后再改回 .NET Framework 4.8。
我完全不知道为什么这解决了这个问题,但确实如此。
IDE 是 Visual Studio 2019。
在多项目解决方案中,如果其他所有事情都失败了......在启动项目中,检查。Dependencies->Assemblies 并查看错误引用的项目是否存在。删除它并重新构建。
为了修复一些不工作的东西,有时删除一些库是有意义的,这听起来不奇怪。
无论如何,我认为问题太广泛了,可能是由不同的因素引起的,所以想分享我的情况/解决方案。
我有一个带有 Xamarin Forms 和 Telerik 库的项目(由客户带来)。这件事通常与组件有关,哪些库不包含在包文件夹中,也不能通过 Nuget(付费)获得。
整个项目的参考文献都是“黄色的”,看起来非常可怕。
解决方案只是删除那些 Telerik引用(包括使用它的代码中的一些控件)。在那之后,所有的参考都神奇地得到了它们常见的正常灰色,并且错误(大部分)消失了。
“大多数情况下” - 因为关于“元素未在任何地方定义”的“全红”错误消息有时仍然会发生。这很奇怪,带来不便,但我仍然能够编译和运行项目:只需要清理解决方案,重新启动 Visual Studio,稍微祈祷,再次清理,删除 obj/bin 文件夹,再次重新启动,就可以了效果很好。
关键是删除不可用的库引用,因为错误消息绝对是另一回事。(例如,诸如“Xamarin.Build.Download.XamarinDownloadArchives 未找到或找不到某些东西”等,但这可能意味着您没有一些可用的参考资料。
然后删除包文件夹,重新加载/重新打开项目/解决方案,转到“管理 Nuget 包”并单击“恢复”按钮。
使用文本编辑器打开 YOURPROJECT.csproj 文件,然后在文件末尾删除目标标记内的这些行,然后再次构建项目!确保 Package 文件夹位于< Reference > < HintPath >中提到的正确路径中
<Error Condition="!Exists('.......
好好享受 ;)
我有这些图标是出于不同的原因。我们为所有项目(近 100 个)提供了一个大解决方案。我对我感兴趣的项目进行了子选择,并提出了一个新的解决方案。但是,项目引用而不是对已编译 dll 的引用的引用......
经过一些研究,我在 GitHub 上找到了这个链接,它解释了这是 VS2015 中的新行为。
在 GitHub 页面上,他们解释了将项目引用转换为二进制引用的解决方法。
得到这个烦人的黄色三角形的原因之一是您两次添加对项目的引用,这意味着:
通过删除参考二,黄色三角形将消失。
我创建了一个新的 .sln 放在一个子文件夹中。添加该 .sln 文件的位置缺少 .nuget 文件夹。将 .nuget 文件夹从根目录移动到我的新 .sln 文件为我解决了这个问题的子文件夹中。
我稍后回来并将 .sln 文件添加到根目录并删除了子文件夹。最初这样做也可以解决问题。
我也面临同样的问题,但我的情况与上面的情况有些不同。我试图打开在另一台计算机上创建的项目。我发现添加引用时包文件夹的路径没有更新,因此重新启动 VS、更改 .NET 版本或任何提到的建议都不能解决问题。我在 notepad++ 中打开了 csproj 文件,并更正了包文件夹的所有相对路径。然后; 所有的警告都消失了。希望能帮助到你。
在 VS 2017 中进行清洁然后构建
谢谢大家的帮助。以下是我如何解决问题的细分:
右键单击您的项目>属性
在应用程序下更改目标框架。就我而言,ImageSharp 使用的是 .Net 4.6.1。您可以在您的 packages.config 中找到它。
转到您的项目参考。您会注意到 SixLabors 有一个黄色三角形。您必须更新 NuGet 包。
右键单击“引用”>“管理 NuGet 包”。
更新 SixLabors。
您可能有轻微的代码更新(见下文),但这解决了我的问题。
在 Visual Studio 2019 中,我的一个项目目标框架是 .net 核心,但它引用了另一个目标框架是 .net 标准的项目。我将所有项目更改为引用 .net 标准并且图标消失了。要查看您的项目是什么,请右键单击它并单击属性并查看目标框架。也可以正常点击项目本身,查看<PropertyGroup>下的<TargetFramework>标签
找到您的 .csprojc 文件并打开它。
找到你的包路径。我通过这个问题修复了我的项目。
..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll
这 .. 意味着 vs 会在父目录中找到这个 dll。
您应该确认您的包路径,并且您将解决此问题。
如果您使用较新样式的 Sdk 项目,请将 OutputType 添加到 ProjectGroup 元素,并在您引用的项目中将值为 Library。如果它在您引用的项目中并且它引用了没有设置的项目,它也会让您感到悲伤。
根据@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>
删除第二个参考解决了这个问题。