Вернитесь к пакетам.config

Можно ли переключиться обратно на packages.config схема вещей? Я переехал в PackageReference Схема, когда я создал проект, но по каким-то причинам необходимо перейти к старому способу вещей сейчас.

Я пробовал команды консоли диспетчера пакетов, такие как восстановление с Update а также Reinstall опции. Они больше не генерируют packages.config. Я тоже перешел Tools > Options > NuGet Package Manager в packages.config, Не хорошо.

5 ответов

Решение

Вам нужно будет:

  1. Добавить "пусто" packages.config файл в проект (то есть XML как в примере, но без отдельных <package> элементы)
  2. Выгрузите проект или закройте и откройте csproj файл в текстовом редакторе.
  3. Удалить все PackageReference элементы из файла проекта.
  4. Удостоверься что <RestoreProjectStyle> не установлен в файле проекта.
  5. Вновь открыть проект в VS.

Мне не хватило одного шага:

4,5. Удостоверься что Tools>Options>NuGet Package Manager>General>Default package management format установлен в Packages.config

Хотел добавить еще одну вещь. Я попробовал все вышеперечисленные шаги, и Visual Studio продолжала пытаться использовать расположение глобальных пакетов вместо repositoryPath из Nuget.config. В конце концов обнаружил, что в файле obj dir моих проектов был файл package-lock.json, в котором хранился глобальный каталог пакетов. По какой-то причине операция очистки в Visual Studio не удаляла файл, поэтому я завел

git clean -x -d -f

В корне моего хранилища. Который удаляет все неотслеживаемые файлы и директоры и игнорирует шаблоны файла.gitignore. Это было немного чрезмерно, я мог бы попытаться найти их всех вручную, но это сделало свою работу. Теперь Nuget restore правильно использует параметр repositoryPath, указанный в файле Nuget.Config.

Как я заставил это работать:

  1. Сделайте снимок экрана с пакетами, которые мы используем в этом проекте.
  2. Добавьте "пустой" packages.config файл в проект и скопируйте в него:
<?xml version="1.0" encoding="utf-8"?>
<packages>
</packages>
  1. Выгрузите проект и откройте файл csproj в текстовом редакторе.

  2. Удалите все элементы PackageReference из файла проекта.

  3. Убедись, что <RestoreProjectStyle> не установлен в файле проекта.

  4. Убедись, что:

    Инструменты> Параметры> Диспетчер пакетов NuGet> Общие> Формат управления пакетами по умолчанию установлен на Packages.config

  5. Удалить obj папка в проекте

  6. Используйте снимок экрана, чтобы повторно загрузить пакеты

Я сделал это и занимался сборкой nuget и заметил, что мои зависимости не приходят, решил откатиться и нашел эту полезную статью от Microsoft:

      
How to roll back to packages.config
Close the migrated project.

Copy the project file and packages.config from the backup (typically <solution_root>\MigrationBackup\<unique_guid>\<project_name>\) to the project folder. Delete the obj folder if it exists in the project root directory.

Open the project.

Open the Package Manager Console using the Tools > NuGet Package Manager > Package Manager Console menu command.

Run the following command in the Console:

update-package -reinstall

https://learn.microsoft.com/en-us/nuget/consume-packages/migrate-packages-config-to-package-reference#how-to-roll-back-to-packagesconfig

Это на самом деле спасает меня прямо сейчас, и я хотел опубликовать это на случай, если у других возникнет аналогичная проблема.

Другие вопросы по тегам