Я работаю над тем же проектом, что и Томас, и я пытался выяснить, когда возникает эта проблема и почему. Кажется, это происходит, когда у нас есть одна или несколько старых версий пакета в папке пакетов и мы пытаемся выполнить команду «обновить пакет».
Перед выдачей команды наша папка пакетов и конфигурация выглядят так:
Папка с пакетами:
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. Разработчик Б получает последнюю версию из системы управления версиями и получает обновленный пакет. config
3. Разработчик Б создает проект, и новый пакет создается в его папке пакетов
4. Nuget не удаляет старый пакет разработчика Б из своей папки пакетов, поэтому у разработчика Б теперь есть и старый пакет, и новый package в своей папке пакетов, а только ссылку в package.config на новую версию.
Мне кажется, что Nuget не ожидает, что в папке пакетов будет более одной версии пакета, и смущается, когда вы пытаетесь обновить пакет, который имеет несколько версий [в папке пакетов], даже если вы только ссылаетесь один пакет из package.config.
person
Mats Mortensen
schedule
06.03.2012