Я работаю над тем же проектом, что и Томас, и я попытался выяснить, когда возникла эта проблема и почему. Кажется, это происходит, когда у нас есть одна или несколько старых версий пакета в папке пакетов и мы пытаемся выполнить команду «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>
Теперь при выдаче пакета обновления Common.WebApi мы получаем ошибку:
Пакет обновлений: «OPF.Common.WebApi» не был установлен ни в одном проекте. Обновление не удалось.
Чтобы исправить это, я удаляю старый пакет «Common.WebApi.1.0.0.109» из папки с пакетами и снова запускаю команду, которая затем работает.
Очевидный вопрос: почему у меня в папке пакетов есть старый пакет? Это происходит с нами, потому что мы не передаем наши собственные пакеты для контроля версий. Вместо этого мы используем подход, который описан здесь: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
В этой ситуации возникает «проблема старого пакета»:
1. Разработчик А обновляет пакет и передает файл package.config в систему управления версиями
2. Разработчик B получает последнюю версию из системы контроля версий и получает обновленный package.config
3. Разработчик Б создает проект, и новый пакет создается в его папке пакетов
4. Nuget не удаляет старый пакет разработчика B из своей папки пакетов, поэтому у разработчика B теперь есть и старый пакет, и новый пакет в папке пакетов, а только ссылка в package.config на новую версию.
Мне кажется, что Nuget не ожидает, что в папке пакетов будет более одной версии пакета, и запутывается, когда вы пытаетесь обновить пакет с несколькими версиями [в папке пакетов], даже если вы ссылаетесь только на один пакет из package.config.