Подтвердить что ты не робот

Все проекты, ссылающиеся на подпроект, должны установить пакет NuGet Microsoft.Bcl.Build(С#/Windows Phone 7)?

У меня особенно сложный сеанс рефакторинга, включающий решение С# с несколькими проектами в Visual Studio 2012. Мне нужно было вытащить кучу кода в свои собственные сборки, чтобы код можно было разделить на несколько проектов, все в такое же решение. Однако, независимо от того, что я пытаюсь, я получаю предупреждения для проектов, которые ссылаются на новые общие проекты: "Все проекты, ссылающиеся на {имя совместного проекта], должны установить пакет nuget Microsoft.Bcl.Build".

Я работал над зависимыми проектами и совместно используемыми проектами с мелким зубным гребнем, тщательно проверяя, что все они используют одну и ту же версию и ту же самую DLL для Microsoft.Bcl версии 1.0.1.19 и Microsoft.Bcl.Async версии 1.0.16:

  • System.Runtime
  • System.Threading.Tasks

  • Microsoft.Threading.Task

  • Microsoft.Threading.Tasks.Extensions
  • Microsoft.Threading.Tasks.Extensions.Phone

Пути DLL все разрешены и идентичны. Файл XAP работает, но я все еще получаю это предупреждение, сообщая мне, что Microsoft.Bcl.Build не ссылается на зависимые проекты, несмотря на то, что я вижу, что это так.

Если я попробую вместо этого удалить и затем переустановить эти два пакета с помощью NuGet для каждого задействованного проекта, я получаю ссылки с пустыми путями и значок предупреждения для 5 связанных DLL-ссылок. По какой-то причине NuGet добавляет ссылки, но не может найти DLL. Кроме того, если я это сделаю, я часто сталкиваюсь с проблемой наличия проектов, в которых я могу получить ошибку "Не могу добавить ссылку" при попытке добавить ссылку. Затем я закрываю и повторно открываю решение, и это приводит к ошибке "проект не загружается". Поэтому мне нужно вручную отредактировать файл проекта, удалить ошибочные инструкции импорта пакетов и перезагрузить проект.

Как я могу исправить эту проблему и какова общая техника для предотвращения этой головной боли в будущем? Предоставление NuGet управления недостающими пакетами не помогло.

4b9b3361

Ответ 1

В случае, если кто-то еще сталкивается с этим, и решение @Swell заставит вас пойти "wtf":

Недавно я прошел через старый проект MVC и обновил его (обновленные пакеты бритвы, asp, http и т.д. nuget). Проект, независимо от себя, построил отлично, но когда я пошел публиковать его с ошибками OP.

Получается, потому что я не обновлял связанный с ним проект *.Tests (должен был подумать, хотя и не уверен, почему тесты тесно связаны с проектом). Итак, чтобы исправить:

  • Щелкните правой кнопкой мыши Решение и выполните управление пакетами nuget.
  • Пройдите все пакеты, которые были обновлены в веб-проекте, и примените их также к другим проектам (каждое "Обновление" отобразит дерево с соответствующими проектами, я был в порядке, просто нажав OKAY).
  • Перестроить.

Теперь вы должны быть хорошими, и вам не следует лаять. Надежда, которая помогает другим.

Ответ 2

Я только что прошел через ту же проблему, и здесь открывается ошибка: http://nuget.codeplex.com/workitem/3268

Что я сделал, так это следующее: я добавил на уровень решения пакет Microsoft.Bcl.Build

В моем dev env, если у вас нет загруженного пакета, просто щелкните правой кнопкой мыши по решению и выберите управление пакетами nuget, вы увидите желтую полосу с кнопкой восстановления, просто щелкните по ней, и все будет в порядке.

В моей сборке script перед компиляцией проекта я запустил эту команду:

.\myproject\.nuget\NuGet.exe install .\myproject\.nuget\packages.config -OutputDirectory .\myproject\packages

Это восстановит пакеты уровня решения, и все будет в порядке.

Это должно быть исправлено к концу этого лета в версии 2.7 согласно отчету о выпуске