2013-09-16 3 views
30

Когда я строю свой проект изнутри VS2012 я получаю следующее сообщение об ошибкеОшибка при помощи NuGet в VS2012 «недостающие пакеты»

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

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

picture of nugget options

Но я все еще получаю ошибку. У меня установлен самородка 2.7. С обновлением VS2012 3

+0

Какой тип проекта, который вы имеете в Visual Studio? В нем есть папка .nuget? –

ответ

21

Как сказал Дэн, если ваше решение имеет папку .nuget (из включения восстановления пакета), то функция автоматического восстановления пакета nuget 2.7 отключается, согласно http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore.

Если автоматическое восстановление пакета отключено, то любой пакет, который устанавливает файлы целевого проекта, приведет к сбою вашей сборки до тех пор, пока вы вручную не восстановите этот пакет в своем решении, как описано в http://blogs.msdn.com/b/dotnet/archive/2013/06/12/nuget-package-restore-issues.aspx. (Обратите внимание, что обходные пути, описанные в ссылке, устарели, теперь доступно автоматическое восстановление пакета nuget 2.7.)

Итак, если обе эти вещи верны, то удалите файл NuGet.targets в папке .nuget, и Nuget затем восстановит недостающий пакет перед вызовом MSBuild. Вы также можете удалить nuget.exe в папке .nuget, так как он больше не будет использоваться.

+1

Нет, это не наличие папки, но nuget.targets;) «Поскольку наличие файла NuGet.targets определяет, будет ли NuGet продолжать использовать метод MSBuild-Integrated» – rad

+9

У меня также не было .nuget , но с использованием первой ссылки в этом ответе решена проблема с моей сборкой. Пришлось удалить некоторый код «EnsureXXXXXXPackageBuildImports» в моем файле .csproj, который предотвращал сборку из-за отсутствия NuGet DLL. –

6
  1. Удалить NuGet
  2. Удалить с Notepad .targets, что в зависимости от NuGet файла проекта
  3. Установите последнюю версию NuGet
  4. Restart Visual Studio и открыть проект/решение.
  5. Если вы хотите, вы можете добавить новые .nuget файлы с последней версией NuGet
+0

Я охотился в Интернете для решения этой проблемы. это единственный, кто работал. восстановление nuget? бах! спасибо за это решение. должны быть отмечены как принятые. – horace

+0

Он полностью решил мою проблему, после того как я выполнил ваши шаги, я смог загрузить другие зависимости от менеджера пакетов nuget, спасибо – MBH

+0

Как удалить данные NuGet из файлов проекта: http://docs.nuget.org/consume/ package-restore/migrate-to-automatic-package-restore –

26

Пожалуйста, следуйте указанным ниже действия:

Шаг 1: Пожалуйста, включите NuGet пакет восстановления щелкнув правой кнопкой мыши на решение [в упоминается в ниже снимок экрана]

Enable Nuget Package Restore

Шаг 2: [Следуйте за этим, если проблема/ошибка не устранена с помощью следующей стадии 1] Тем не менее, если вы сталкиваетесь с проблемой, пожалуйста, откройте .csproj файл в блокноте и проверить на пути пакета, который может выглядеть

Package Path

Так что ваша структура каталогов решений будет как:

\SolutionDirectory\ 

Каталог Пакет: Каталог

\SolutionDirectory\packages 

Проект:

\SolutionDirectory\ProjectName\ProjectName.csproj 

Пожалуйста, откройте этот .csproj [, в котором вы получаете ошибку] ​​в блокноте и найдите путь к пакетам и обновите его до соответствующего пути.

Для примера. my .csproj содержится, если файл .csproj содержит ..\..\packages, то обновите этот путь с помощью ..\packages

+3

Downvoted, потому что это старый метод восстановления пакетов, который больше не рекомендуется. http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html и http://docs.nuget.org/docs/reference/package-restore и –

+3

Согласовано - Следуйте по этому пути, и вы можете поцеловать прощание с чем-либо, развернутым через Visual Studio Online TFS, веб-публикацию или другие более новые модели развертывания Microsoft. – binderbound

+0

Все еще работайте для меня. Мне нужно изменить путь пакета от \ packages \ to .. \ packages \. –

0

Удалите каталог .nuget из решения, если оно существует. Отредактируйте файл проекта и удалите элементы Import and Target, содержащие ссылки на папку .nuget, Сохраните и перезагрузите проект.

0

попробовать это,

  1. Элемент списка
  2. правой кнопкой мыши на решение
  3. нажмите управлять NuGet
  4. нажмите настройки в левом нижнем углу
  5. проверка Разрешить NuGet загрузить отсутствующий пакет ,
10

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

Error 117 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 ..\..\Windows Phone 8\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets. 

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

<Error Condition="!Exists(... 
+2

Это спасло мне много боли. Спасибо! –

+1

Спасибо. Комментирует следующую строку: -> – MAK

0

Просто правой кнопкой мыши на решение и «Включить восстановление NuGet Пакет» решить мою проблему.

2

csproj Открыть файл в блокноте и удалить Error Condition элементы здесь (или сделать эти условия работы):

<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'))" /> 
    <Error Condition="!Exists('..\packages\System.Data.SQLite.Core.1.0.101.0\build\net45\System.Data.SQLite.Core.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\System.Data.SQLite.Core.1.0.101.0\build\net45\System.Data.SQLite.Core.targets'))" /> 
    </Target> 
Смежные вопросы