Ответ 1
Я работаю над тем же проектом, что и Tomas, и я попытался выяснить, когда эта проблема возникает и почему. Кажется, это происходит, когда у нас есть одна или несколько старых версий пакета в папке пакетов и пытаемся выдать команду "update-package".
Перед выдачей команды наша папка и конфиг пакетов выглядит следующим образом:
Папка пакетов:
Common.WebApi.1.0.0.109
Common.WebApi.1.0.0.110
Конфигурация пакетов:
<packages>
<package id="Common.WebApi" version="1.0.0.110" />
<package id="System.Json" version="4.0.20126.16343" />
<package id="System.Net.Http" version="2.0.20126.16343" />
</packages>
Теперь при выпуске "update-package Common.WebApi" мы получаем ошибку: Обновление пакета: "OPF.Common.WebApi" не был установлен ни в одном проекте. Не удалось выполнить обновление.
Чтобы исправить это, я удаляю старый пакет "Common.WebApi.1.0.0.109" из папки пакетов и повторно запускаю команду, которая затем работает.
Очевидный вопрос: почему у меня есть старый пакет в папке с папками? Это происходит с нами, потому что мы не используем наши собственные пакеты для контроля источника. Вместо этого мы используем описанный здесь подход: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
В этой ситуации возникает "проблема старого пакета":
1. Разработчик A обновляет пакет и фиксирует файл package.config для управления исходным кодом
2. Разработчик B получает последнюю версию от исходного элемента управления и получает обновленный файл package.config
3. Разработчик B создает проект, и новый пакет создается в его папке пакетов
4. Nuget не удаляет старый пакет разработчика B из своей папки с папками, поэтому у разработчика B теперь есть и старый пакет, и новый пакет в его папке пакетов, но только ссылка в пакете .config на новую версию.
Мне кажется, что Nuget не ожидает, что в папке пакетов будет более одной версии пакета и будет запутано, если вы попытаетесь обновить пакет с несколькими версиями [в папке пакетов], хотя вы ссылаетесь только на один пакет из package.config.