He migrado una solución que actualmente apunta a .NET 4.0 en VS2010 a VS2012 y ahora me gustaría reorientarla a .Net 4.5
De lo que no estoy seguro es de los paquetes NuGet. Por ejemplo, EF5, que actualicé desde EF4 en VS2010, resulta ser EF 4.4 como puede ver aquí:
<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>
También puedo ver lo siguiente en packages.config para el proyecto:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="5.0.0" targetFramework="net40" />
</packages>
Entonces mi pregunta es:
¿Cuál es la mejor práctica para reorientar todos los paquetes NuGet que actualmente están configurados para apuntar a .NET 4.0 para apuntar a .NET 4.5?
.net
nuget
visual-studio-2012
.net-4.5
Ivan Zlatev
fuente
fuente
Respuestas:
NuGet 2.1 ofrece una función que hace que esto sea mucho más simple: simplemente hazlo
update-package -reinstall -ignoreDependencies
desde la consola del Administrador de paquetes.NuGet 2.0 no maneja muy bien la reorientación de sus aplicaciones. Para cambiar los marcos de destino de sus paquetes, debe desinstalarlos y reinstalarlos (tomando nota de los paquetes que había instalado para poder reinstalar cada uno de ellos).
La razón por la que los paquetes deben desinstalarse y reinstalarse es:
fuente
update-package -reinstall
en Package Manager Console. Todos los paquetes comenzaron a desinstalarse y actualizarse y, de repente, Windows 8 se reinició y cuando regresó le dijo "Su PC se encontró con un problema y se reinició. ¿Desea enviar información a Microsoft?" :( Asustando ... Por cierto, esta es la versión de NuGet que he instalado ahora2.2.40116.9051
: abríPara aquellos que tuvieron problemas con el
update-package -reinstall <packagename>
comando, considere ejecutarlo con-ignoreDependencies
flag, así:Este indicador dejará en paz las dependencias de su paquete, de lo contrario, podrían actualizarse incluso si el paquete que originalmente deseaba reinstalar aún mantiene su versión en el mismo.
Más información aquí .
fuente
get-package | % { update-package $_.Id -reinstall -ProjectName $_.ProjectName -ignoreDependencies }
Después de probar la respuesta aceptada sin éxito, me gustaría sugerir un comando menos arriesgado:
Para más información: http://blog.nuget.org/20121231/a-quick-tutorial-on-update-package-command.html
fuente
-reinstall
, solo se instalará la misma versión, por lo que no ve ningún beneficio al usarla-safe
. ¿Me estoy perdiendo de algo?Al intentar reinstalar paquetes en toda la solución, encontré un error de dependencia (a pesar de usar el
-ignoreDependencies
indicador), y todos los archivos packages.config para cada proyecto habían sido eliminados. En VS2013, parece que los paquetes.config no se vuelven a vaciar en el disco y se vuelven a agregar hasta que todas las dependencias / referencias actualizadas se vuelvan a unir al proyecto.En mi caso, lo que funcionó fue actualizar cada proyecto uno por uno agregando el
-ProjectName
nombre del proyecto alupdate-package
comando. En este caso los paquetes.config se actualizan a medida que se actualiza cada proyecto.Puede que no sea práctico para soluciones muy grandes, pero parece un compromiso razonable seguir aprovechando la actualización automatizada para tantos proyectos como sea posible y aislar los problemáticos sin tener todos los paquetes.config en su solución eliminados en caso de falla.
fuente
UpdatePackage -Reinstall
eliminó el paquete.config y las referencias de proyecto para algunos proyectos (específicamente los que tenían ensamblados falsos generados en ellos). Trabajamos alrededor de esto deshaciendo todos los cambios en el proyecto jodido y ejecutándolo:Update-Package -reinstall -ProjectName "PROJECTNAME" -IgnoreDependencies
Con Visual Studio para Mac 2019, hacer clic con el botón derecho en la carpeta Paquetes muestra la opción 'Retarget' en el menú. Esto resolvió el problema de retarget para todos los paquetes en el proyecto que requerían retargeting. Parece que no había NuGet Package Manager en el menú Herramientas en Visual Studio para Mac (al menos en el mío), por lo que no pude iniciar Package Manager Console.
fuente