【问题标题】:Why do I get a warning icon when I add a reference to an MEF plugin project?当我添加对 MEF 插件项目的引用时,为什么会出现警告图标?
【发布时间】:2013-12-09 18:35:09
【问题描述】:

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

当我改为添加对 dll 的引用(插件的程序集构建输出)时,我没有收到此类警告。这个警告想告诉我什么?

【问题讨论】:

  • 大多数情况下,警告三角形会在错误窗口中有工具提示或(如果失败)条目。猜测一下,这两个项目有不兼容的依赖关系。
  • 尝试构建时控制台中有任何警告吗?
  • 我在针对不同 .net 框架版本的项目中看到了这一点
  • @OP 你能选择 kad81 的答案作为正确答案吗
  • 这总是让我着迷。向 .NET 4 解决方案添加新项目,默认为 4.5。

标签: .net mef project-reference


【解决方案1】:

找到您的 .csprojc 文件并打开它。

找到你的包路径。我通过这个问题修复了我的项目。

..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll

this .. 表示 vs 会在父目录中找到这个 dll。

你应该确认你的包路径,你的意志会解决这个问题。

【讨论】:

    【解决方案2】:

    使用文本编辑器打开 YOURPROJECT.csproj 文件,然后在文件末尾删除目标标记内的这些行,然后再次构建项目! 确保 Package 文件夹位于

    中提到的正确路径中
    <Error Condition="!Exists('.......
    

    享受它;)

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        即

        • 项目参考项目 b
        • 项目 c 引用项目 a(添加了隐式引用。展开并查看)
        • 项目 c 引用项目 b

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

        【讨论】:

        • 或者同时引用项目和项目构建的dll。
        【解决方案5】:

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

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

        删除参考二,黄色三角形会消失。

        【讨论】:

          【解决方案6】:

          根据@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>
          

          删除第二个引用解决了这个问题。

          【讨论】:

            【解决方案7】:

            我创建了一个新的 .sln,它被放在一个子文件夹中。添加该 .sln 文件的位置缺少 .nuget 文件夹。将 .nuget 文件夹从根目录移动到我的新 .sln 文件解决了我的问题的子文件夹中。

            我稍后回来并将 .sln 文件添加到根目录并删除了子文件夹。最初这样做也可以解决问题。

            【讨论】:

              【解决方案8】:

              我在针对 .NET Core 3.1、.NET Standard 2.0 和 .NET Framework 4.8 的项目的解决方案中遇到了同样的问题。问题在于最后一个。

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

              我完全不知道为什么这解决了这个问题,但它确实解决了。

              IDE 是 Visual Studio 2019。

              【讨论】:

                【解决方案9】:

                在多项目解决方案中,如果其他所有事情都失败了...在启动项目中,检查。 Dependencies->Assemblies 并查看错误引用的项目是否存在。删除它并重新构建。

                【讨论】:

                  【解决方案10】:
                  1. 确保每个项目的所有版本都相同单击每个项目并在此处查看版本 Project > Properties > Application > Target .NET framework

                  2. 一个。转到工具 > Nuget 包管理器 > 包管理器控制台类型 Update-Package -Reinstall(如果不工作继续2.b)

                    b. 这很关键,但最大的可能性是可行的。 删除可能多行通常在.csproj的底部找到。

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

                  【讨论】:

                  • 谢谢,Visual Studio 中关于 .Net 版本的错误消息不会误入歧途!
                  • @colmde 有趣的是,如果您清理解决方案,输出窗口会显示以下消息:'使用 .NetFramework XXX 而不是目标框架 .NetFramework XXX 恢复了包。该包可能与您的项目不完全兼容'
                  • 第 2.b 部分未在其他答案中注明,这对我来说至关重要! 2.b 删除可能多行通常在.csproj的底部找到。
                  • 第 2.b 部分完全是疯狂的,但它确实有效!谢谢
                  • 谢谢 2.b 也帮了我。我自己永远也想不通。
                  【解决方案11】:

                  在所有面向 .Net Core 3.1 的项目中使用 Visual Studio 2019,解决方案是:

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

                  【讨论】:

                    【解决方案12】:

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

                    下的标签

                    【讨论】:

                      【解决方案13】:

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

                      右击你的项目>属性

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

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

                      右键单击“引用”>“管理 NuGet 包”。

                      更新 SixLabors。

                      您可能有轻微的代码更新(见下文),但这解决了我的问题。

                      Convert ImageSharp.Image to ImageSharp.PixelFormats.Rgba32?

                      【讨论】:

                        【解决方案14】:

                        在 VS 2017 中进行清理然后构建

                        【讨论】:

                          【解决方案15】:

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

                          【讨论】:

                            【解决方案16】:

                            尝试关闭和打开 VS。

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

                            【讨论】:

                            • 为我工作。有时,无论是否愚蠢,Visual Studio 都会感到困惑,并且它的缓存会被搞砸。感谢您的建议-讨厌这样做,因为我觉得自己很愚蠢,认为它会起作用,但是“见鬼”-在做了一个小时的其他事情之后,我还不如和 tada 它起作用了
                            • VS 2019 ......相同。这个答案应该移到顶部,只是为了避免我们这些与鬼打架的人浪费我们的时间。
                            【解决方案17】:

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

                            【讨论】:

                              【解决方案18】:

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

                              【讨论】:

                              • 类似情况! .NETCore 3.0 和 .NETStandard 2.0 库,编译后重新编译,删除和读取,直到我重新启动 VS。谢谢
                              【解决方案19】:

                              在 Asp.net 核心中,如果您更改项目名称空间或名称,有时它会显示警报。要删除这种警报,您只需卸载项目并再次加载它。 如果问题仍然存在,则意味着您找不到您的程序集参考。

                              【讨论】:

                                【解决方案20】:

                                为了修复一些无法正常工作的东西,有时删除一些库是有意义的,这听起来不奇怪。

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

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

                                整个项目的引用都是“黄色的”,看起来很可怕。

                                解决方案只是删除那些 Telerik references(包括代码中使用它的一些控件)。在那之后,所有的引用都神奇地变成了它们常见的正常灰色,并且错误(大部分)消失了。

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

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

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

                                【讨论】:

                                  【解决方案21】:

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

                                  Update-Package -Reinstall
                                  

                                  【讨论】:

                                  • 虽然这个建议没有直接解决我的问题,但它为我的场景指明了正确的方向。对于那些可能会有所帮助的人,我实际上不得不将我的 NuGet 包源更改为 v3 以便 Update-Package 找到要下载的正确版本:docs.nuget.org/consume/package-manager-dialog#package-sources
                                  • 它删除了所有软件包,安装了它们,黄色三角形又回来了。
                                  • 真棒帮助了我。
                                  【解决方案22】:

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

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

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

                                  【讨论】:

                                    【解决方案23】:

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

                                    右键单击项目>属性>应用程序>目标.NET框架

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

                                    【讨论】:

                                    • 完美,为我工作!我有一个带有 .NET Framework 4.5.2 的 MVC 项目。我引用它的类库是 .NET Framework 4.7。
                                    • 人们会认为添加到现有解决方案中的新项目足够聪明,可以知道什么版本,但遗憾的是事实并非如此。
                                    【解决方案24】:

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

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

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

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

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

                                    【讨论】:

                                      【解决方案25】:

                                      检查引用的 dll 的 NETFramework 和要添加 DLL 的项目。 前任: DLL ==> 支持运行时版本="v4.0" 项目 ==> supportedRuntime version="v3.0"

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

                                      【讨论】:

                                        【解决方案26】:

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

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

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

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

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

                                        【讨论】:

                                          【解决方案27】:

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

                                          【讨论】:

                                            【解决方案28】:

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

                                            【讨论】:

                                            • 我还需要知道为什么 Visual Studio 接受添加这些引用呢?
                                            • 我正在使用 VS 2015,但问题仍然存在。我已经失去了半个小时才来到这里。
                                            • 甚至没有任何悬停文本或构建错误来解释问题所在
                                            • 可以确认这是问题的根源。还可以确认带有更新 15.3 的 Visual Studio 2017 仍未解决实际未显示有意义消息的问题。很烦人。
                                            • @matao 同意!很烦人,我无法获得有关错误的任何详细信息...
                                            猜你喜欢
                                            • 1970-01-01
                                            • 1970-01-01
                                            • 1970-01-01
                                            • 1970-01-01
                                            • 1970-01-01
                                            • 1970-01-01
                                            • 2011-08-20
                                            • 2021-08-10
                                            • 2020-10-21
                                            相关资源
                                            最近更新 更多