Повторный таргетинг Nuget после обновления с .Net Framework 4.5 до 4.6.1
У меня есть .net-решение с примерно 30 проектами, все из которых нацелены на .Net Framework 4.5. и каждый из ссылок содержит по меньшей мере 3-4 пакета NuGet.
Теперь нам нужно обновить их до .Net Framework 4.6.1. Итак, вот что мне нужно знать:
- Нужно ли мне перенаправлять пакеты NuGet, или я могу пропустить это, так как это будет обновление на месте?
- Если да, могу ли я просто обновить файл packages.config для каждого проекта, заменив targetFramework = "net45" на targetFramework = "net461" для каждого пакета NuGet? Я видел несколько потоков, рекомендующих удалить, а затем переустановить пакет с помощью команды "update-package". Я пробовал это сегодня, но в итоге у меня появилось несколько ошибок.
Ответы
Ответ 1
Пакеты не будут перенацеливаться автоматически, но для этого есть автоматическое исправление.
В консоли управления пакетами просто запустите:
Update-Package -Reinstall
Это заставит диспетчер пакетов переустанавливать каждый пакет в каждом проекте (без изменения версии ссылочного пакета).
Переустановив пакеты после целенаправленной новой структуры, это изменит все ссылки на правильную версию.
Вы также можете запустить это против одного проекта с помощью:
Update-Package -Reinstall -ProjectName Project.Name.Here
Я использовал эту технику много раз, чтобы исправить проблемы с ссылкой nuget.
Ответ 2
1 Найдите все файлы .csproj и замените
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
с
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
2 Найдите все файлы packages.config и .nuspec и замените
targetFramework="451"
с
targetFramework="461"
3 Найдите все решения, затем запустите
Update-Package -Reinstall -IgnoreDependencies
4 Найти все решения, а затем msbuild каждый из них.
Ответ 3
Исправлено с помощью -
Update-Package -reinstall
![введите описание изображения здесь]()