Не удается открыть проект в Visual Studio из-за ошибки nuget.targets not found


105

Итак, я загрузил Twitterizer с http://www.twitterizer.net/downloads/

Я пытаюсь открыть его в Visual Studio и получаю все эти ошибки nuget:

The imported project "C:\Twitterizer\.nuget\nuget.targets" was not found. 
Confirm that the path in the <Import> declaration is correct, and that the file 
exists on disk.

Что происходит. Как мне с этим справиться?


5
Просто примечание на случай, если кто-то еще столкнется с этим. Nuget 2.7 представил новый тип восстановления пакетов. Если вы попытаетесь добавить проект, в котором используется старый стиль, в решение, использующее новый стиль, вы получите ту же ошибку. Способ исправить это - перенести проект на новый стиль: docs.nuget.org/docs/workflows/…
Slapout

Ответы:


171
  1. Установите Nuget.
  2. Щелкните решение правой кнопкой мыши и выберите «Включить восстановление пакета NuGet». В Visual Studio 2013 и более поздних версиях вместо этого выберите «Восстановить пакеты NuGet».
  3. Нажмите ОК в предупреждении.
  4. Закройте и снова откройте раствор.

Теперь должно быть здорово.


2
Спасибо за это, было бы хорошо, если бы они дали более полезное сообщение об ошибке в VS для этого.
rossisdead

2
Я все еще получаю эту ошибку, хотя это больше не относится к nuget 2.7
thepaulpage

Вам нужно сделать обходной путь, который упоминает @Slapout (комментарий к исходному вопросу)
JasonS

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

23

Альтернативный вариант - отредактировать файл .csproj с помощью текстового редактора и удалить или закомментировать сегмент.


4
Чтобы расширить этот случай - если вы переместите проект из решения с явным файлом .nuget \ nuget.targets в новый, вы увидите эту проблему (даже после восстановления пакетов NuGet). В этом случае либо создайте nuget .targets или отредактируйте файл проекта вручную.
ThisGuy

Я также применил это решение, поскольку в моем проекте не использовались пакеты NuGet, а VS, похоже, автоматически сгенерировал этот материал. Благодарим вас за контроль версий, который позволил исключить добавленные строки из .csproj.
Иван Г,

Какой сегмент нужно удалить?
Zapnologica

18

Эта ошибка обычно возникает, когда вы пытаетесь открыть .csprojфайл напрямую, а не через файл решения, и .csprojимпортирует такие цели Nuget следующим образом:

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

Чтобы решить эту проблему, вы можете либо открыть, .slnа не .csprojнапрямую ... или удалить importстроку выше.

Обратите внимание, что упомянутая ошибка произойдет только при использовании solution wiseвосстановления пакета, что даже не рекомендуется.


2
Это проблема, которая у меня была.
SparkyShorts

1
удаление «строки импорта выше». сделал трюк для меня. Спасибо!!
Барт

5

Просто столкнулся с той же проблемой, но в моем случае проблема заключалась в пробеле в имени папки:

Nuget сообщал мне, что не может найти «C: \ git \ My Path», но я смог перейти к «C: \ git \ My% 20Path». Удаление пробела в имени папки «устранило» проблему.


Именно это и было моей проблемой - большое вам спасибо!
Нильсен,

2

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

Закройте Visual Studio. Если решение, которое вы пытаетесь перенести, открыто в Visual Studio, изменения могут быть потеряны. Visual Studio может перезаписать / игнорировать ваши изменения в некоторых случаях, а расширение NuGet также попытается повторно включить восстановление пакета, когда увидит, что в некоторых проектах в решении оно отсутствует.

Если вы используете TFS Удалите файлы NuGet.exe и NuGet.targets из папки .nuget решения. Убедитесь, что сами файлы также удалены из рабочей области решения. Сохраните файл NuGet.Config, чтобы и дальше обходить добавление пакетов в систему управления версиями. Отредактируйте каждый файл проекта (например, .csproj, .vbproj) в решении и удалите все ссылки на файл NuGet.targets. Откройте файл (ы) проекта в любом редакторе и удалите следующие настройки:

правда ... ...

<PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download

их. Для получения дополнительной информации см. Http://go.microsoft.com/fwlink/?LinkID=322105 . Отсутствующий файл: {0}. Если вы не используете TFS Удалите папку .nuget из вашего решения. Убедитесь, что сама папка также удалена из рабочей области решения. Отредактируйте каждый файл проекта (например, .csproj, .vbproj) в решении и удалите все ссылки на файл NuGet.targets. Откройте файл (ы) проекта в любом редакторе и удалите следующие настройки:

правда ... ...

<PropertyGroup>
    <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download

их. Для получения дополнительной информации см. Http://go.microsoft.com/fwlink/?LinkID=322105 . Отсутствующий файл: {0}. Сценарий миграции Многие пользователи запрашивали средство миграции, чтобы отключить восстановление пакетов на основе MSBuild и преобразовать их в автоматическое восстановление пакетов. Команда NuGet решила не предоставлять для этого поддерживаемый инструмент из-за высокой вероятности необработанных крайних случаев. Однако Оуэн Джонсон создал сценарий PowerShell, который может работать во многих случаях. Он доступен на GitHub и может использоваться на свой страх и риск. Другими словами, не забудьте зафиксировать систему управления версиями перед ее запуском, на случай, если она не сработает в вашем сценарии.

Исправление Nuget.target


1

Когда я получаю сообщение об nuget.targets not foundошибке, я использую диспетчер пакетов для uninstall-packageодного из пакетов в проекте, а затем переустанавливаю его, используя install-package. Похоже, тогда он регенерирует файл nugets.target.


1

Самое простое решение, когда вы получаете эту ошибку, чтобы восстановить отсутствующие NuGet.targetsв Visual Studio Solution Explorer, является:

  1. Щелкните правой кнопкой мыши файл решения
  2. В контекстном меню выберите параметр « Включить восстановление пакета Nuget ...»

это загрузит недостающие файлы в ".nuget папку " :)

Вышеупомянутое предполагает, что у вас уже установлен Nuget - если не следуйте принятому ответу выше!

ОБНОВЛЕНИЕ: обратите внимание, что для версий Visual Studio после 2013 года параметр называется « Восстановить пакеты NuGet ».


1
У меня нет опции включения восстановления пакета nuget. Я только что restore nuget packages.
Zapnologica

Обновлен ответ - это новое название пункта меню после VS2013
Эмиль
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.