Обновления пакета Nuget и Package.config удаляют проблему (TF400024)

В последнее время возникают проблемы с обновлениями пакетов nuget и интеграцией управления источниками TFS. Это вызывает у нас проблемы с нашей командой и заставляет нас стесняться в принятии пакетов nuget полностью.

Проблема/ошибка; вместо обновления некоторых файлов "package.config" проектов они удаляются из файловой системы (и помечены как удаленные в исходном элементе управления TFS...) Я не могу понять, почему...

Поведение, которое мы видим, следующее:

  • Открыть в решении (около 18 проектов) в VS.NET 2012
  • Инициировать обновление пакета уровня решения до последней версии с помощью диалогового окна управления пакетами, как описано here.
    • Пакет package.config существует и является частью проекта (ов) в пределах указанного выбранного решения.
    • Тезисы packages.configs еще не удалены из TFS.
  • Обновление пакета Nuget происходит, выберите package.config, удаленные из проекта и помеченные как удаленные в TFS, и ссылки остаются в проекте, обновленном до текущей версии....
  • Очевидно, это означает, что при проверке решения и проекта package.config будет удален, что сделает будущие обновления (я считаю) болезненными, поскольку проект выше будет падать с помощью ракеты-носителя nuget....
  • Я замечаю это и отменю выезд и получаю эту ошибку:

    TF400024: The change on xxx\packages.config cannot be undone because a file already exists at xxx\packages.config. The file must be deleted from disk for the undo to succeed.
    
    • Интересно, что в TFS файл помечается как удаленный, но он все еще находится в моей файловой системе?

Результат, предоставленный Менеджером пакетов, приведенный ниже, не указывает на какие-либо проблемы для проекта, в котором был удален pacakage.config...

Updating 'NugetPackageAssemblyA' from version '1.5.18.0' to '1.5.23.0' in project 'CommonUnitTests'.
 Removed reference 'AssemblyAA.dll' from project 'CommonUnitTests'
 Removed reference 'AssemblyBB.dll' from project 'CommonUnitTests'
 Removed reference 'AssemblyCC.dll' from project 'CommonUnitTests'
 Removed reference 'NugetPackageAssemblyA.dll' from project 'CommonUnitTests'
 Added file 'packages.config'.
 Removed file 'packages.config'
 Successfully removed 'NugetPackageAssemblyA 1.5.18.0' from CommonUnitTests.
 Added reference 'AssemblyAA' to project 'CommonUnitTests'
 Added reference 'AssemblyBB' to project 'CommonUnitTests'
 Added reference 'AssemblyCC' to project 'CommonUnitTests'
 Added reference 'NugetPackageAssemblyA' to project 'CommonUnitTests'
 'packages.config' already exists. Skipping...
 Successfully added 'NugetPackageAssemblyA 1.5.23.0' to CommonUnitTests.

DEV. Статистика окружающей среды:

  • Менеджер пакетов Nuget: версия 2.2.40116.9051
  • Visual Studio 2012: версия 11.051106.01 Обновление 1

Есть ли что-нибудь, что мне не хватает????  Спасибо

Ответы

Ответ 1

Простая регистрация кода в Visual Studio Online сделала для меня трюк.

Ответ 2

Что здесь происходит (вероятно), так это то, что у вас была предыдущая версия (или такая же версия).dll в качестве ссылки, а в НЕКОТОРНОЙ точке (независимо от того, сделали ли вы это или VS), она удалила ссылку. Пока вы не видите ссылку в папке, процесс проверки TFS/ GIT все еще ждет, чтобы "проверить" тот факт, что вы его удалили. Поэтому, если вы не проверили этот факт, VS думает, что он все еще существует, когда на самом деле это не так. Вы можете проверить это в области Team Explorer, где вы сможете увидеть удаленный DLL (обозначенный линией через него).

Похоже глупо, но как это происходит.

Ответ 3

У меня тоже была эта проблема.

Чтобы решить эту проблему:

  • Откройте проводник исходного кода (Team Foundation)
  • Найдите папку "пакеты" для решения
  • Сделать проверку этой папки

После этого вы можете установить пакеты Nuget без получения ошибки TF400024.

Ответ 4

Try:

  • Отвяжите все свои проекты от источника управления
  • Установить пакет nuget
  • Отмените все свои проекты снова

Ответ 5

Обходной путь для нас состоял в том, чтобы проверить все решение, а затем обновить ваши пакеты NuGet.

Ответ 6

У меня была похожая проблема, и я сделал следующее:

  1. Удалить файл с моего компьютера.
  2. Проверьте изменения.

Ответ 7

Все:

Если вы извлекаете код из TFS, и из-за сложных отношений между пакетами вы не можете перезагрузить один или несколько nuget, вот что я сделал:

  1. Удалите всю папку решения.
  2. Проверьте код еще раз.
  3. Щелкните правой кнопкой мыши на решении, затем нажмите "Восстановить пакеты NuGet"

Но убедитесь, что код, используемый для правильной работы, перед последней проверкой.

Спасибо,

-Yuan Z

Ответ 8

У меня была такая же проблема. Проблема заключалась в том, что я ранее установил и удалил пакет. Даже после того, как я установил проект в TFS после установки, пакет остался в папке пакетов в моем решении TFS.

Чтобы решить эту проблему, я открыл окно Source Control Explorer и обнаружил проблемную папку, указанную в сообщении об ошибке установки пакета: "Изменение в \packages [папка] [пакет].nupkg не может быть отменено, поскольку файл уже существует в \packages [папка] [package].nupkg. Файл должен быть удален с диска, чтобы отменить операцию. "

Затем я удалил \packages [folder] и зарегистрировался.

После этого мой пакет NuGet установлен без проблем.

Ответ 9

Очистка кеша nuget перед обновлением пакетов может решить проблему.