Visual Studio не загружает ссылки на проекты

У меня есть решение Visual Studio (Community 2013) со многими проектами С# на моем компьютере, и я только что обновился до Windows 10 с 7. В проекте используется клиентский профиль .Net Framework 4.0. На win7 все работало нормально, но теперь один из проектов не загружает ссылки. Рядом с элементами, на которые есть ссылки, есть желтые треугольники, которые не являются элементами, на которые есть ссылки из одного и того же решения (поэтому система и ссылки, загруженные NuGet, не загружены).

ссылки...

Ресурсы — это еще один проект в решении, остальные — нет. Когда я открываю вкладку свойств для ссылки на систему, поле Path пусто, поэтому поле Resolved равно False...

пустой путь

Кроме того, в файле .csproj вроде все в порядке, есть <HintPath> узла там, где нужно, с относительными (или абсолютными, если ссылка на другой диск) и правильными, существующими путями.
Еще одна странность: в в обозревателе объектов все ссылки (по-видимому) загружены:

Обозреватель объектов работает нормально

И что я должен делать:

  • заново создать файл проекта (создав новый проект и снова добавив все файлы и ссылки);
  • изменить что-то в конфигурации проекта;
  • используйте более новую версию .Net;
  • изменить что-то в конфигурации VS;
  • использовать другой VS (например, Community 2015) или переустановить текущий?

person nvi9    schedule 06.09.2015    source источник
comment
Установлен ли фреймворк? У вас может отсутствовать 4.0, учитывая, что 4.5.x является последней, и я сомневаюсь, что Windows 10 включает более старые фреймворки. И вы можете просматривать библиотеки для более новой платформы в проводнике классов, но (из-за разницы в версиях) не будут включены в ваш проект.   -  person Brad Christie    schedule 06.09.2015
comment
@BradChristie Я пытался переустановить фреймворк, но он выходит, говоря, что Microsoft Net Framework 4 является частью этой операционной системы ... (и т. Д.). Другие проекты могут правильно загружать свои ссылки, они используют тот же фреймворк.   -  person nvi9    schedule 06.09.2015
comment
Фреймворк или фреймворк SDK?   -  person Brad Christie    schedule 06.09.2015
comment
В других проектах с той же целевой платформой этой проблемы нет, поэтому у меня, вероятно, есть sdk framework...   -  person nvi9    schedule 06.09.2015
comment
Вы пробовали сбрасывать и читать ссылки одну за другой?   -  person Brad Christie    schedule 06.09.2015
comment
Похоже, вы потеряли каталог c:\program files (x86)\reference assemblies. Фигово. Переустановка VS была бы одним из способов вернуть его.   -  person Hans Passant    schedule 06.09.2015
comment
@BradChristie Да, я пытался. Нет эффекта :/   -  person nvi9    schedule 06.09.2015
comment
@HansPassant Каталог существует, но, как я уже упоминал, другие проекты с точно такой же конфигурацией не имеют тех же проблем, только этот проект бедолаги...   -  person nvi9    schedule 06.09.2015
comment
Не могли бы вы прикрепить *.cproj ?   -  person Ilia Maskov    schedule 06.09.2015
comment
Мы наблюдали это и на работе. Проекты, созданные в Windows 8 или 7, нормально загружаются в 8 или 7, но в Windows 10 ссылки не загружаются. Решение еще не найдено, но вы не одиноки.   -  person Sam Sussman    schedule 21.01.2016
comment
Я видел ту же проблему с разрешением ссылок, что приводило к тому же значку в ссылках на проекты, когда кто-то пытается ссылаться на проект B из проекта A, а проект B имеет более высокую версию фреймворка, чем проект A. Например, B — 4.6. 1, а А равно 4.5.2.   -  person Seth Flowers    schedule 26.09.2017


Ответы (5)


У меня тоже была эта проблема, и мне потребовалось некоторое время, чтобы понять ее. Проблема в том, что NuGet изменил способ восстановления пакетов. «Старому способу» требовалась папка «.nuget» с 3 файлами (nuget.config, nuget.exe, nuget.targets) и некоторыми настройками в файле проекта, например:

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
  <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
  </PropertyGroup>
  <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
</Target>

Это привело к срыву проекта.

Чтобы исправить это, скопируйте отсутствующий каталог в проект (получите его с помощью более старой версии Visual Studio/NuGet или от коллеги, у которого он есть) или просто удалите вышеупомянутую часть из проекта. файл.

Для достижения наилучших результатов также удалите:

<RestorePackages>true</RestorePackages> 

и

<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

из файла проекта!


Узнайте больше на эту тему здесь:

http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html

http://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore

https://docs.microsoft.com/en-us/visualstudio/ide/troubleshooting-broken-references

person Uszkai Gyula    schedule 23.09.2015
comment
Я могу подтвердить, что это правильный подход - если предположить, что целевая структура не была вашей проблемой. - person sapbucket; 13.12.2016
comment
Ничего себе, какой беспорядок у Microsoft на руках. В VS2017, по-видимому, это все еще проблема. Я боролся с этим в течение 2 часов. Когда я наконец прочитал этот пост и скопировал папку .nuget из другого проекта в папку решения, все, наконец, заработало. Спасибо!! - person user1524080; 26.07.2017
comment
Прохладно. Большое спасибо. Спас мой день. - person AH.; 15.07.2020
comment
У меня была очень похожая проблема. Мой коллега добавил проект в наше решение. Я обновился из системы управления версиями, и на моем компьютере ни одна из ссылок не работала. Я не совсем понял решение Ушкаи, но они привели меня к похожему решению. Я открыл диспетчер пакетов Nuget (из VS -> Tools). Я понизил версию пакета nuget Microsoft.CodeDom.Providers.DotNetCompilerPlatform с версии 2.0.1 до 2.0.0. Это решило проблему. Я обновился до 2.0.1, и все работает хорошо! - person TizzyFoe; 09.04.2021

Основная проблема - ссылка FRAMEWORK.

Загрузите свой проект в VS и измените его на странице PROJECT PROPERTIES (TARGET FRAMEWORK), обновив до .NET 4.x (не клиент) или .NET 4.5.

person David BS    schedule 07.09.2015
comment
Я пробовал, ничего лучше... Во всяком случае, у других проектов нет проблем с этой версией .Net. - person nvi9; 07.09.2015

Убедитесь, что оба проекта ориентированы на одну и ту же версию фреймворка. Например: один с целевой платформой .Net Framework 4.5.1 не будет работать с 4.5.

person bgS    schedule 30.10.2018
comment
ОМГ, я потратил на это 2 часа. Спасибо за это! - person toughQuestions; 14.04.2020

Если вы используете «TFS» или любую другую систему управления версиями, я решил проблему:

Сравните файл решения с последним. Я сделал это и понял, что Visual Studio сама добавила множество конфигураций для x86, и это вызвало проблему, даже если я пытаюсь получить сборку с x64. Проверка файла, а затем отмена изменений сделали свое дело.

person Emirhan Özlen    schedule 25.02.2020

У меня возникла эта проблема в VS-2015 (проект не загружал ссылки), когда я переместил проект в другую папку. И название новой папки было большое, я сократил название и перезагрузил проект, после чего он заработал.

person Kavir_11    schedule 29.09.2020