¿Cuando migrar package.config a PackageReferences?

Package references es el nuevo sistema de referencia de dependencias Nuget externas que sustituirá el sistema basado en el archivo config.  Lo que busca Microsoft con este cambio es integrar las referencias externas en el archivo de proyecto y tener un sistema único de repositorio global a nivel solución. Este cambio fue incluido en la versión 15.7 de Visual Studio, es relativamente nuevo. De momento no es necesario que migres, solo ten en cuenta que ya no hay soporte activo al sistema legado (package.config) y puede ser declarado como obsoleto en el corto plazo.

Casos no soportados del sistema de PackageReferences.

  • Cualquier proyecto que tenga que ser compilado en Visual Studio 2015 o versiones anteriores.
  • Proyectos en C++ y Asp.Net.
  • Proyectos de tipo Sitio web.
  • Cualquier proyecto que haga referencia a dependencias Nuget incompatibles.
  • Cualquier proyecto con pipelines basadas en el sistema de archivos config (al menos hasta que reconstruyas los build steps).

Dependencias Top-Level y Transitive.

Existen dos tipos de dependencias en este sistema, las Top-Level que se refieren a todos aquellos packages Nuget que descargaste.  Y las Transitive que se refieren a las dependencias de los packages que descargaste y no fueron instaladas explícitamente por ti. En algunos casos vas a requerir que ciertas dependencias de terceros sean instaladas siempre, puedes indicarle al asistente de migración que esas dependencias son de tipo Top-Level.

Mimgrar de Packages.config a PackageReferences

¿Como migrar a PackageReferences con Visual Studio?

Esto lo puedes hacer desde la interfaz de usuario de Visual Studio, en el explorador de soluciones ubicas los archivos package.config, clic secundario y seleccionas la opción Migrar a PackagesReferences. Este no es un proceso irreversible. Una solución puede tener proyectos en ambos esquemas y funcionar perfectamente.

Ventajas de PackageReferences.

La ventaja inmediata es que vas a poder visualizar tus dependencias locales y tus dependencias Nuget en un solo lugar. En el sistema anterior las dependencias locales se agregaban en un lugar y los paquetes Nuget en otro. Ambos sistemas funcionan para exactamente lo mismo, por eso no hace mucho sentido la migración hasta que nuevas versiones de Visual Studio, MsBuild, .Net Core o .Net Framework lo marquen como obligatorio.

 

 

 

 

 

 

 

 

 

 

 

Gustavo Sánchez