Проект відкриття в Visual Studio не вдається через помилку nuget.targets не знайдено


105

Тому я завантажив Twitterizer з http://www.twitterizer.net/downloads/

Я намагаюся відкрити його у Visual Studio і отримати всі ці чіткі помилки:

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

Тут все ще не працює, це говорить про те, що відновлення більше немає. Я вже видалив папку пакунків і відновив її пару разів :(
rodrigorf

23

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


4
Щоб розширити цей випадок - якщо ви перемістите проект із рішення з явним .nuget \ nuget.targets файлом у новий, ви побачите цю проблему (навіть після відновлення пакетів 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 Package ..."

це завантажить відсутні файли у " .nuget" папці :)

Наведене вище передбачає, що у вас вже встановлено Nuget - якщо не дотримуйтесь прийнятої відповіді вище!

ОНОВЛЕННЯ: Зверніть увагу, що для версій Visual Studio після 2013 року опція називається " Відновити пакети NuGet "


1
У мене немає можливості відновити пакунок відновлюваного пакета. Я просто маю restore nuget packages.
Zapnologica

Оновлена ​​відповідь - це нова назва параметра меню після VS2013
Еміль
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.