Почему я получаю значок предупреждения, когда добавляю ссылку на проект плагина MEF?

Я хочу протестировать базовый класс плагина, напрямую ссылаясь на проект плагина и создав экземпляр класса плагина. Когда я создаю тестовый проект консольного приложения и добавляю ссылку на проект в проект плагина, я получаю значок предупреждения (желтый треугольник с восклицательным знаком) рядом со ссылкой в ​​списке ссылок.

Когда я вместо этого добавляю ссылку на dll, вывод сборки сборки плагина, я не получаю такого предупреждения. Что это предупреждение пытается мне сказать?


person ProfK    schedule 25.11.2013    source источник
comment
В большинстве случаев предупреждающие треугольники будут иметь подсказки или (в противном случае) запись в окне ошибок. Предположительно, два проекта имеют несовместимые зависимости.   -  person Damien_The_Unbeliever    schedule 25.11.2013
comment
Есть ли предупреждения в консоли при попытке сборки?   -  person Jite    schedule 25.11.2013
comment
Я видел это с проектами, ориентированными на разные версии фреймворков .net   -  person mhand    schedule 23.07.2014
comment
@OP не могли бы вы выбрать ответ kad81 как правильный?   -  person Andy    schedule 27.05.2015
comment
Это всегда меня заводит. Добавление нового проекта в решение .NET 4, значение по умолчанию - 4.5.   -  person Robin French    schedule 06.11.2015
comment
Только что получил это и могу подтвердить для меня, что это была версия .Net ссылочного проекта, например. 4.5 ›4.5.1 в зависимом проекте. поставил оба на 4.5.1 и все хорошо!   -  person DubMan    schedule 30.11.2015
comment
Может ли кто-нибудь просто объяснить мне, почему у меня есть один VS 2013, где проект просто компилируется с 4.0 dll в проекте 4.5, но когда я пытаюсь создать проект на моем VS, он дает мне эту эталонную ошибку? Я понимаю, что ссылки должны быть одной и той же версии, но в некоторых условиях это просто работает   -  person Nick    schedule 02.02.2016


Ответы (26)


Как упоминалось в комментариях к вопросу, это могут быть разные версии .NET Framework в разных проектах. Проверьте свойства вашего нового проекта, чтобы убедиться, что другая версия по умолчанию не используется.

person kad81    schedule 30.01.2015
comment
Мне также нужно знать, почему тогда Visual Studio согласилась добавить эти ссылки? - person Anders Lindén; 12.05.2016
comment
Я использую VS 2015, и проблема все еще существует. Я потерял полчаса, пока не пришел сюда. - person Alisson; 12.07.2016
comment
нет даже текста наведения или ошибок сборки, объясняющих, в чем проблема - person matao; 04.09.2017
comment
Могу подтвердить, что это было корнем проблемы. Также можно подтвердить, что в Visual Studio 2017 с обновлением 15.3 до сих пор не решена проблема отсутствия отображения значимого сообщения. Очень назойливый. - person Greg R Taylor; 12.09.2017
comment
@matao Согласен! Это раздражает, что я не смог получить никаких подробностей об ошибке ... - person nterry; 12.01.2018
comment
@TsarBomba Нет, это не должен быть принятый ответ, потому что оба рассматриваемых проекта для .Net Core 2. - person ProfK; 06.04.2018
comment
Кажется, очень плохое решение пользовательского интерфейса в VS представлять это только значком, учитывая все вещи, которые могут пойти не так со ссылкой (файл не найден, неправильная версия фреймворка, неправильная платформа, проблемы с зависимостями и т. Д.) Всплывающей подсказкой или чем-то еще действительно поможет здесь. - person jrh; 26.04.2018
comment
Жизнь спасена! Спасибо! - person Sotiris Zegiannis; 02.11.2018
comment
Мне пришлось перезапустить Visual Studio, чтобы значки предупреждений исчезли после того, как я исправил проекты. - person Adam Wise; 22.06.2019
comment
Все еще работаю над своими проблемами с VS2019 здесь. У меня в DevOps есть рабочее решение. Если я подключаюсь к удаленному репо и синхронизирую, у меня все еще есть проблемы с зависимостями. Обновил Nuget - это не имеет никакого эффекта. Создание корпоративной базы данных с учетом времени, потраченного на решение проблем, которые отвлекают разработчиков (чтобы мы могли улучшить наши оценки). Проблемы с Git и DevOps в значительной степени являются основными причинами. В некоторых случаях на решение такого рода проблем уходит более четырех часов. - person Doug Kimzey; 04.05.2021

Обнаружена та же проблема с веб-приложением ASP.Net и двумя проектами библиотечных классов, на которые необходимо ссылаться в веб-приложении. У меня не было информации о том, почему сборка не удалась, а ссылки были недействительными.

Решение заключалось в том, чтобы у всех проектов была одна и та же Target Framework:

В Visual Studio 2015: Щелкните правой кнопкой мыши проект> Свойства> Приложение> Целевая платформа.

Сохранить, очистить и восстановить решение. Ссылки на проект больше не должны отображаться в виде желтых предупреждений, и решение будет скомпилировано.

Мое веб-приложение было нацелено на .Net 4.5, тогда как два других проекта зависимых библиотечных классов были нацелены на .Net v4.5.2.

person k-dev    schedule 17.04.2016

Для обоих (или всех) проектов, которые вы хотите использовать вместе:

Щелкните правой кнопкой мыши проект> Свойства> Приложение> Целевая платформа .NET.

Убедитесь, что оба (или все) ваши проекты используют одну и ту же версию .NET framework.

person user3578181    schedule 25.07.2016
comment
Отлично, у меня сработало! У меня был проект MVC с .NET Framework 4.5.2. И мои библиотеки классов, которые на него ссылаются, были .NET Framework 4.7. - person Mike Upjohn; 16.08.2017
comment
Можно было бы подумать, что новые проекты, добавленные к существующему решению, будут достаточно умными, чтобы знать, какая версия, но, к сожалению, не так. - person Ron; 30.05.2018

  1. Убедитесь, что все версии одинаковы для каждого проекта. Щелкните каждый проект и посмотрите версию здесь. Проект ›Свойства› Приложение ›Целевая платформа .NET.

  2. а. Перейдите в Инструменты ›Диспетчер пакетов Nuget› Тип консоли диспетчера пакетов Обновление-Пакет -Переустановить (если не работает, перейдите к 2.b)

    б. ЭТО КРИТИЧЕСКАЯ, НО САМАЯ БОЛЬШАЯ ВОЗМОЖНОСТЬ, КОТОРАЯ БУДЕТ РАБОТАТЬ. Remove ‹Target› Может быть с несколькими строками ‹/ Target› обычно находится в нижней части .csproj.

  3. Сохраните, загрузите и соберите решение.

person Aljohn Yamaro    schedule 13.12.2017
comment
Спасибо за это, красивое сообщение об ошибке в Visual Studio о версиях .Net здесь не сбилось бы с пути! - person colmde; 31.01.2018
comment
@colmde интересно, если вы очистите решение, в окне вывода отобразится следующее сообщение: «Пакет был восстановлен с использованием .NetFramework XXX вместо целевой платформы .NetFramework XXX. Пакет может быть не полностью совместим с вашим проектом » - person elszeus; 05.07.2018
comment
Часть 2.b, которая не была отмечена в других ответах, была для меня критичной! 2.b Удалить ‹Цель› Может быть с несколькими строками ‹/ Target› обычно находится в нижней части .csproj. - person shelbypereira; 04.01.2019
comment
Часть 2.b совершенно безумна, но она работает! Благодарность - person Elo; 23.09.2019
comment
Спасибо 2.b тоже помогло мне. Я НИКОГДА не догадался бы об этом. - person Henrik Clausen; 22.10.2019
comment
@shelbypereira Я обновлю свой ответ, спасибо за это - person Aljohn Yamaro; 27.03.2020
comment
@Elo Я рад, что это помогло. - person Aljohn Yamaro; 27.03.2020
comment
@HenrikClausen Приятно слышать. Спасибо. - person Aljohn Yamaro; 27.03.2020

Переустановите все пакеты во всех проектах текущего решения:

Update-Package -Reinstall
person Nitin Badole    schedule 23.10.2015
comment
Хотя это предложение не решило напрямую мою проблему, оно указывало мне правильное направление для моего сценария. Для тех, кому это может помочь, мне на самом деле пришлось изменить источник моего пакета NuGet на v3 для Update-Package, чтобы найти нужную версию для загрузки: docs.nuget.org/consume/package-manager-dialog#package-sources - person John Lee; 09.05.2016
comment
Он удалил все пакеты, установил их, и желтые треугольники вернулись. - person Anders Lindén; 21.07.2019
comment
Круто мне помогло. - person Vyache; 22.03.2021

Убедитесь, что у вас есть проекты, ориентированные на одну и ту же версию платформы. В большинстве случаев причина заключается в том, что текущий проект (в котором вы добавляете ссылку на другой проект) указывает на другую версию .NET Framework, чем остальные.

person user274294    schedule 29.07.2018

Попробуйте закрыть и открыть VS.

Выглядит глупо, но после 1 часа выполнения вышеизложенного и обнаружения, что все в порядке. Я перезапустил VS 2017, и проблемы исчезли.

person Alex Stephens    schedule 19.03.2019
comment
Работал у меня. Иногда, как ни странно, Visual Studio путается и портится кеш. Спасибо за предложение - ненавидел это делать, потому что я чувствовал себя глупо, думая, что это сработает, но какого черта - после часа других вещей я мог бы тоже, и тада, это сработало - person Blake; 15.10.2019
comment
VS 2019 ... то же самое. Этот ответ должен переместиться в начало, чтобы просто уберечь тех из нас, кто борется с призраками, от зря времени. - person DonBoitnott; 28.06.2021

Что касается меня, я столкнулся с этой проблемой при обращении к библиотеке классов .NET Standard 2.0 в консольном приложении .NET Framework 4.7.1. Да, фреймворки разные, но они совместимы (.NET Standard должен работать как с .NET Core, так и с .NET Framework). Я пробовал очистить, перестроить, удалить и прочитать ссылку на проект и т. Д. Безуспешно. . Наконец, выход из Visual Studio и повторное открытие устранили проблему.

person Justin    schedule 05.04.2018
comment
Аналогичная ситуация! .NETCore 3.0 и .NETStandard 2.0 библиотеки, скомпилированы, перекомпилированы, удалены и прочитаны, пока я не перезапущу VS. Спасибо - person David; 30.10.2020

Проверьте NETFramework указанной DLL и проекта, в который вы добавляете DLL. Пример: DLL ==> supportedRuntime version = "v4.0" Project ==> supportedRuntime version = "v3.0"

Вы получите значок предупреждения. Решение: Сделайте версию dll согласованной.

person Sumit khare    schedule 18.12.2015

Прошло много времени с тех пор, как этот вопрос задавали, но если кому-то все еще интересно - я недавно сталкивался с похожими значками. Я компилировал проект C # .net с помощью VS 2008. Я обнаружил, что VS не может найти сборки для этих ссылок. Когда я дважды щелкнул VS, обновил ссылки и удалил значки на некоторых из этих [РЕДАКТИРОВАТЬ: которые теперь можно было найти]. Для остальных ссылок мне пришлось скомпилировать соответствующие сборки.

person HappyTown    schedule 19.08.2014

Добавляя мои 2 цента к ответу @ kad81,

Перейдите в Visual Studio -> BUILD -> Configuration Manager.

В раскрывающемся списке «Активная платформа решения» в верхнем правом углу (у меня VS 2012), если это «Смешанные платформы», измените его на соответствующую платформу на основе ваших эталонных сборок сторонних производителей.

Затем в каждом проекте в списке убедитесь, что вы выбрали одну и ту же платформу для всего проекта. (если x86 не существует, выберите "", затем вы можете выбрать "x86".)

Перестройте сначала проекты библиотеки, а затем ссылки на проекты. Надеюсь это поможет.

person JenonD    schedule 17.10.2015

Используя Visual Studio 2019 со всеми проектами, ориентированными на .Net Core 3.1, решение заключалось в следующем:

  1. Очистить / построить / восстановить.
  2. Перезапустите Visual Studio 2019
person Riaan van Zyl    schedule 09.03.2020

В ядре Asp.net иногда отображается предупреждение, если вы меняете пространство имен или имя проекта. Чтобы удалить подобные предупреждения, просто выгрузите проект и загрузите его снова. Если проблема все еще существует, значит, вы не можете найти ссылку на сборку.

person Tomcat0x4d2e47    schedule 29.03.2018

Также происходит, если вы явно ссылаетесь на проект, на который уже неявно ссылались.

i.e

  • проект а ссылки проект б
  • проект c ссылается на проект a (который добавляет неявную ссылку. Разверните и посмотрите)
  • проект c ссылается на проект b

вы увидите восклицательный знак рядом с буквой b под ссылками на проекты.

person user2021262    schedule 31.12.2020

Эти иконки у меня были по другой причине. У нас есть одно большое решение для всех наших проектов (около 100). Я сделал часть проектов, которые меня интересовали, и сделал новое решение. Однако ссылки, в которых содержатся ссылки на проекты, а не ссылки на скомпилированные dll ....

После некоторого исследования я обнаружил, что эта ссылка на GitHub, в которой объясняется, что это новое поведение в VS2015.

На странице GitHub объясняется обходной путь преобразования ссылок на проекты в двоичные ссылки.

person Martijn    schedule 07.09.2016

Чтобы исправить некоторые неработающие вещи, имеет смысл иногда удалить некоторые библиотеки, как бы это не звучало странно.

В любом случае, я считаю, что проблема слишком велика и может быть вызвана разными факторами, поэтому хочу поделиться своей ситуацией / решением.

У меня был проект (привезенный заказчиком) с библиотеками Xamarin Forms и Telerik. В основном речь шла о компонентах, которые библиотеки не входят в папку пакетов и не доступны через Nuget (платные).

Весь проект Референсы были «желтыми», это выглядело ужасно и устрашающе.

Решение заключалось в том, чтобы просто удалить эти ссылки на Telerik (включая несколько элементов управления в коде, которые их использовали). Сразу после этого все ссылки волшебным образом приобрели свой обычный нормальный серый цвет, и ошибки (в основном) исчезли.

«В основном» - потому что «все вокруг красное» сообщения об ошибках «элемент нигде не определен» иногда все еще возникают. Это странно и доставляет неудобства, но я все еще могу скомпилировать и запустить проект (ы): просто нужно очистить решение, перезапустить Visual Studio, немного помолиться, снова очистить, удалить папки obj / bin, снова перезапустить, и он работает хорошо.

Главное - удалить ссылки на недоступные библиотеки, поскольку сообщения об ошибках говорят совсем другое. (Например, что-то вроде «Xamarin.Build.Download.XamarinDownloadArchives не найден или не может что-то найти» и т. Д., Но это может означать, что у вас нет доступных ссылок.

Затем удалите папку пакетов, перезагрузите / снова откройте проект / решение, перейдите в «Управление пакетами Nuget» и нажмите кнопку «Восстановить».

person Agat    schedule 09.01.2018

В многопроектном решении, если все остальное не удалось ... В проекте startUp проверьте. Зависимости-> Сборки и посмотрите, есть ли там проект, на который есть ссылка. Удалите его и соберите заново.

person Babatunde Ahmed    schedule 28.04.2020

Я также столкнулся с той же проблемой, но мой случай немного отличался от приведенного выше. Я попытался открыть проект, созданный на другом компьютере. Я обнаружил, что путь к папке пакета не обновляется при добавлении ссылки, поэтому перезапуск VS, изменение версии .NET или любые упомянутые рекомендации не решают проблему. Я открыл файл csproj в блокноте ++ и исправил все относительные пути к папке пакетов. Потом; все предупреждения исчезли. Надеюсь, это поможет.

person ali    schedule 12.06.2019

в VS 2017 Сделайте очистку, затем выполните сборку

person user1684037    schedule 28.06.2019

Спасибо всем за помощь. Вот подробное описание того, как я решил свою проблему:

Щелкните правой кнопкой мыши свой проект> Свойства

В разделе «Приложение» измените целевую платформу. В моем случае ImageSharp использовал .Net 4.6.1. Вы можете найти его в файле packages.config.

Перейдите к ссылкам на ваш проект. Вы заметите, что у SixLabors есть желтый треугольник. Вам необходимо обновить пакет NuGet.

Щелкните правой кнопкой мыши Ссылки> Управление пакетами NuGet.

Обновите SixLabors.

У вас могут быть небольшие обновления кода (см. Ниже), но это устранило мою проблему.

Преобразовать ImageSharp.Image в ImageSharp.PixelFormats.Rgba32?

person PhoenixWright    schedule 20.12.2019

В Visual Studio 2019 целевой структурой одного из моих проектов было ядро ​​.net, но он ссылался на другой проект, целевая среда которого была стандартом .net. Я изменил все проекты, чтобы они ссылались на стандарт .net, и значки исчезли. Чтобы узнать, что это за проект, щелкните его правой кнопкой мыши, выберите «Свойства» и посмотрите на Target framework. Вы также можете щелкнуть по самому проекту и посмотреть на тег ‹TargetFramework> в‹ PropertyGroup>

person abovetempo    schedule 21.01.2020

У меня была такая же проблема в решении с проектами, ориентированными на .NET Core 3.1, .NET Standard 2.0 и .NET Framework 4.8. Проблема была в последней.

Уловка, решившая для меня проблему, заключалась в изменении целевой платформы на .NET Framework 4.5, а затем обратно на .NET Framework 4.8.

Я понятия не имею, почему это устранило проблему, но это произошло.

IDE была Visual Studio 2019.

person Christian Molinari    schedule 20.07.2020

Я создал новый .sln, который был помещен в подпапку. Папка .nuget отсутствовала, откуда был добавлен этот файл .sln. Перемещение папки .nuget из корня в подпапку, где мой новый файл .sln решил проблему для меня.

Я вернулся позже, добавил файл .sln в корень и удалил подпапку. Первоначально это тоже решило бы проблему.

person Dan Leksell    schedule 04.08.2020

Основываясь на ответе @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>

Удаление этой второй ссылки решило проблему.

person Guilherme F    schedule 19.09.2020

Одна из причин появления этого раздражающего желтого треугольника заключается в том, что вы дважды добавляете ссылку на проект, что означает:

  • Ссылка первая: MyProjectOne (который уже содержит ссылку на MyProjectTwo).
  • Ссылка вторая: MyProjectTwo

Если удалить ссылку 2, желтый треугольник исчезнет.

person Stacked    schedule 12.12.2020

Если вы используете проекты Sdk нового стиля, добавьте OutputType в элемент ProjectGroup со значением Library в проекте, на который вы ссылаетесь. Это также доставит вам горе, если оно находится в проекте, на который вы ссылаетесь, и ссылается на проект без настройки.

person Adam Cruickshank    schedule 08.06.2021