Почему у всех моих ссылок есть желтые восклицательные знаки в моей библиотеке классов .NET? - PullRequest
23 голосов
/ 08 сентября 2010

Я уже довольно давно занимаюсь разработкой библиотеки классов, и внезапно, где-то на прошлой неделе я открыл свой проект, и теперь у всех моих ссылок есть желтые восклицательные знаки (System.dll, System.Drawing.dll). , так далее..). Я попытался удалить ссылки и заново добавить их, чтобы исправить любые неработающие пути ссылок, но они продолжают показывать желтые восклицательные знаки на них.

Ничего не изменилось с тех пор, как я в последний раз открывал проект. Единственное, что отличалось от того, когда я в последний раз открывал проект, это то, что на этот раз я открыл его прямо из .NET из другого проекта. Например, я работал над веб-проектом .NET 3.5, затем щелкнул Файл -> Открыть последние файлы -> Мое другое решение. Это закрыло мое текущее текущее веб-решение 3.5 и открыло решение библиотеки классов 2.0, и проблема появилась впервые. Я не уверен, как (или почему) это может вызвать проблемы, но я склоняюсь к тому, что Visual Studio запуталась или что-то еще, и теперь все мои сборки недопустимы в этом проекте библиотеки классов 2.0. (?)

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

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

Заранее спасибо!

Ответы [ 13 ]

43 голосов
/ 28 января 2011

Просто чтобы добавить к этому. Недавно у меня возникла проблема, когда я добавлял ссылки, в которых для TargetFramework было установлено значение .NET 4.0, в проект Visual Studio 2008. Все, что вы получите, это желтый восклицательный знак и объяснение.

Как только я понял, что выбрал неправильные двоичные файлы выпуска, это казалось очевидным!

18 голосов
/ 08 сентября 2010

Используя Solution Explorer, щелкните правой кнопкой мыши и выберите Unload Project, а затем выберите Edit (имя вашего файла csproj), чтобы иметь возможность редактировать файл .csproj непосредственно в VS.

Под одним из <ItemGroup> узлов вы найдете подузлы, помеченные Reference. Убедитесь, что значение узла HintPath указывает на правильный путь. Также проверьте правильность значений узлов SpecificVersion и Private.

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

11 голосов
/ 07 октября 2015

Проверка погоды .NET Framework проекта равна или больше, чем эталонный .Net Framework

5 голосов
/ 12 августа 2015

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

4 голосов
/ 06 октября 2015

Недавно у меня возникла та же проблема с проектом, открытым в Visual Studio 2015.

Произошла ошибка, когда я несколько раз переместил физическое расположение репозиториев пакетов решений по умолчанию и намеренно изменил значениеof repositoryPath в NuGet.Config

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

<Error Condition="!Exists('..\..\..\..\..\Packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')" 
       Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\..\Packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets'))" />

Также эта ошибка воспроизводится, когда обычная папка Package удаляется или перемещается в другое место.Затем следует обновить это значение вместе с ItemGroups.

2 голосов
/ 14 августа 2015

Измените целевую платформу DotNet, чтобы она была одинаковой между двумя проектами, и все будет работать нормально. (Особенно если вы "обновляете")

1 голос
/ 11 марта 2016

У меня была такая же проблема после копирования папок проекта из другого проекта в качестве отправной точки для нового решения.

Все проекты ссылались на этот желтый восклицательный знак, даже ссылки на каркасные сборки.

Наконец, помогло обеспечить , чтобы папка ".nuget" (включая Nuget.Config, NuGet.exe, NuGet.targets) находилась в моей папке с решением. Затем я сделал «Восстановить пакеты Nuget» в контекстном меню решения. Теперь все восклицательные знаки исчезли!

1 голос
/ 29 января 2014

У меня была такая же проблема с желтыми восклицательными знаками на множестве файлов исходного кода решения, которое проверено / поддерживается TFS.Не было никакой закономерности относительно того, какие файлы на самом деле имеют желтый восклицательный знак, а какие нет.Исследуя причину этой проблемы, я мог видеть, что эти файлы с желтыми восклицательными знаками фактически даже не были извлечены из TFS на мой жесткий диск.Я проверил HintPath и т. Д. В файлах .csproj, и там все выглядело нормально, и никакой другой совет из этой ветки не помог мне решить проблему.

Что, наконец, помогло мне сделать следующее: в обозревателе решений щелкните правой кнопкой мыши Project -> Get Specific Version ... -> («Тип версии: последняя выбранная версия уже выбрана») -> + включить флажок«Перезаписать все файлы, даже если локальная версия соответствует указанной версии» -> нажмите кнопку «Получить»

После того, как я это сделал, все файлы исходного кода могут быть успешно извлечены из TFS, и желтые восклицательные знаки исчезли!Я надеюсь, что это поможет кому-то, у кого такая же проблема!

0 голосов
/ 29 октября 2016

В моем случае получается, что dll имела версию, отличную от пакета nuget.Несмотря на то, что 1.1.14 был загружен и папка называлась 1.1.14, после проверки свойств DLL (на вкладке сведений) я заметил, что это была версия 1.1.13.

Следовательно, мой csproj должен был ссылаться на папку 1.1.14, но на 1.1.13 dll.Я изменил файл csproj, чтобы указать это.

0 голосов
/ 28 октября 2015

Проблема: Это то, что случилось со мной, я сопоставлял свой репозиторий TFS с папкой в ​​C: \ Users \ myUserNameFolder \ «MyUserNameFolder» имеет специальные разрешения для того факта, что это папка System, из-за которой указанные dll в решении получали желтый треугольник, и всякий раз, когда я пытался повторно ссылаться на все dll, они по-прежнему получали ту же отметку желтого треугольника , Решение: Я переназначил свой репозиторий TFS в обычную папку на C: \, и это помогло. Надеюсь, это кому-нибудь поможет ...

P.S. Это произошло в VS 2015.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...