Вернитесь к пакетам.config
Можно ли переключиться обратно на packages.config
схема вещей? Я переехал в PackageReference
Схема, когда я создал проект, но по каким-то причинам необходимо перейти к старому способу вещей сейчас.
Я пробовал команды консоли диспетчера пакетов, такие как восстановление с Update
а также Reinstall
опции. Они больше не генерируют packages.config. Я тоже перешел Tools > Options > NuGet Package Manager
в packages.config
, Не хорошо.
5 ответов
Вам нужно будет:
- Добавить "пусто"
packages.config
файл в проект (то есть XML как в примере, но без отдельных<package>
элементы) - Выгрузите проект или закройте и откройте
csproj
файл в текстовом редакторе. - Удалить все
PackageReference
элементы из файла проекта. - Удостоверься что
<RestoreProjectStyle>
не установлен в файле проекта. - Вновь открыть проект в 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.
Как я заставил это работать:
- Сделайте снимок экрана с пакетами, которые мы используем в этом проекте.
- Добавьте "пустой"
packages.config
файл в проект и скопируйте в него:
<?xml version="1.0" encoding="utf-8"?> <packages> </packages>
Выгрузите проект и откройте файл csproj в текстовом редакторе.
Удалите все элементы PackageReference из файла проекта.
Убедись, что
<RestoreProjectStyle>
не установлен в файле проекта.Убедись, что:
Инструменты> Параметры> Диспетчер пакетов NuGet> Общие> Формат управления пакетами по умолчанию установлен на
Packages.config
Удалить
obj
папка в проектеИспользуйте снимок экрана, чтобы повторно загрузить пакеты
Я сделал это и занимался сборкой 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
Это на самом деле спасает меня прямо сейчас, и я хотел опубликовать это на случай, если у других возникнет аналогичная проблема.