Я перенес решение, которое в настоящее время нацелено на .NET 4.0 в VS2010, на VS2012, и теперь я бы хотел переназначить его на .Net 4.5.
В чем я не уверен, так это в пакетах NuGet. Например, EF5, который я обновил с EF4 в VS2010, на самом деле оказывается EF 4.4, как вы можете видеть здесь:
<Reference Include="EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll</HintPath>
</Reference>
Я также вижу следующее в пакетах.config для проекта:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="5.0.0" targetFramework="net40" />
</packages>
Итак, мой вопрос:
Какова лучшая практика для переориентации всех пакетов NuGet, которые в настоящее время настроены на целевой .NET 4.0, на целевой .NET 4.5?
.net
nuget
visual-studio-2012
.net-4.5
Иван Златев
источник
источник
Ответы:
NuGet 2.1 предлагает функцию, которая делает это намного проще: просто сделайте
update-package -reinstall -ignoreDependencies
из консоли диспетчера пакетов.NuGet 2.0 не очень хорошо справляется с переориентацией ваших приложений. Чтобы изменить целевые рамки ваших пакетов, вы должны удалить и переустановить пакеты (принимая во внимание установленные вами пакеты, чтобы вы могли переустановить каждый из них).
Причина, по которой пакеты должны быть удалены и переустановлены:
источник
update-package -reinstall
в консоли диспетчера пакетов. Все пакеты начали удаляться и обновляться, и внезапно Windows 8 перезагружался, и когда он вернулся, он сказал: «Ваш компьютер столкнулся с проблемой и перезапустился. Хотите отправить информацию в Microsoft?» :( Пугая ... Кстати, это версия NuGet, которую я установил прямо сейчас:2.2.40116.9051
открыл проблему здесь: nuget.codeplex.com/workitem/3049Для тех, у кого были проблемы с
update-package -reinstall <packagename>
командой, попробуйте запустить ее с-ignoreDependencies
флагом, например так:Этот флаг оставит зависимости вашего пакета в покое, в противном случае они могут быть обновлены, даже если пакет, который вы первоначально хотели переустановить, все еще сохраняет свою версию в прежнем состоянии.
Больше информации здесь .
источник
get-package | % { update-package $_.Id -reinstall -ProjectName $_.ProjectName -ignoreDependencies }
После неудачной попытки принять принятый ответ я хотел бы предложить менее рискованную команду:
Для получения дополнительной информации: http://blog.nuget.org/20121231/a-quick-tutorial-on-update-package-command.html
источник
-reinstall
будет установлена только одна и та же версия, поэтому не вижу никакой пользы от использования-safe
. Я что-то упускаю?При попытке переустановить пакетное решение в целом, я столкнулся с ошибкой зависимости (несмотря на использование
-ignoreDependencies
флага), и все файлы packages.config для каждого проекта были удалены. В VS2013, кажется , что packages.config не сбрасываться на диск и добавили повторно , пока все модернизированная зависимость / ссылка повторно прикреплено к проекту.В моем случае то, что работало, состояло в том, чтобы обновить каждый проект по одному, добавив имя
-ProjectName
проекта кupdate-package
команде. В этом случае packages.config обновляется при обновлении каждого проекта.Может быть непрактичным для очень больших решений, но кажется разумным компромиссом по-прежнему использовать автоматическое обновление для максимально возможного числа проектов и изолировать проблемные, не удаляя при этом все пакеты package.config в вашем решении.
источник
UpdatePackage -Reinstall
удалил файл package.config и ссылки на проекты для нескольких проектов (особенно тех, в которых были созданы поддельные сборки). Мы работали над этим, отменив все изменения в испорченном проекте и запустив:Update-Package -reinstall -ProjectName "PROJECTNAME" -IgnoreDependencies
В Visual Studio для Mac 2019 при щелчке правой кнопкой мыши по папке «Пакеты» в меню отображается пункт «Ретаргетинг». Это решило проблему ретаргетинга для всех пакетов в проекте, которые требовали ретаргетинга. Похоже, в меню «Инструменты» в Visual Studio для Mac не было диспетчера пакетов NuGet (по крайней мере, у меня), поэтому я не смог запустить консоль диспетчера пакетов.
источник