Saltar al contenido

¿Cómo crear un paquete nuget con dll de liberación y depuración usando el explorador de paquetes nuget?

Hola, encontramos la respuesta a tu interrogante, deslízate y la obtendrás un poco más abajo.

Solución:

Mi opinión es que el empaquetado de NuGet tiene mucho que ver con las convenciones.

No hay problema en empaquetar los mismos espacios de nombres y los mismos nombres para diferentes plataformas (como en lib/net40/mydll.dll, lib/net35/mydll.dll etc. en el mismo paquete), ya que NuGet filtrará las dependencias registradas por plataforma.

Construir varias versiones para la misma plataforma parece poco convencional, esta discusión está sesgada hacia la creación de un paquete por compilación. Eso no significa que no puedas hacerlo, pero primero debes preguntarte si deberías hacerlo.

Dicho esto, si sus compilaciones de depuración y lanzamiento son muy diferentes (compilación condicional, etc.), esto podría ser útil. Pero, ¿cómo elegirán los usuarios finales Liberar o Depurar al instalar su paquete?

Una idea podría ser, una versión por configuración de compilación. Ambos se pueden instalar en el proyecto. Para hacer eso, agregue un archivo de objetivos a su paquete o cree un script de instalación de powershell (no compatible desde Nuget v3) que agrega referencias condicionales directamente en el archivo del proyecto de destino, si desea algo menos básico que cualquier cosa que MsBuild pueda hacer por usted.

Ejemplo de la primera táctica: Cree un archivo .target (en su paquete, cree un build carpeta y luego crear buildYourLib.targets con los siguientes contenidos):




    
      ..packagesYourLib.1.0.0libDebugYourLib.dll
    
  

  
    
      ..packagesYourLib.1.0.0libReleaseYourLib.dll
    
  

Siempre que haya creado carpetas de depuración y lanzamiento (la carpeta de la plataforma es opcional), la salida de la compilación cambiará efectivamente según la configuración, siempre que los consumidores de paquetes tengan nombres de configuración convencionales, pero siempre puede extender un poco la lógica de la condición con $ (Configuración). Contiene, etc. o simplemente poner eso en el archivo Léame del paquete

Inspirado por @Tewr, encontré una solución engorrosa pero funcional.

Cree un nuget con la siguiente estructura de archivos:

libnet$(Configuration)YourLib.1.0.0.dll    <---- put here some dummy file  named YourLib.1.0.0.dll
toolsreleaseYourLib.1.0.0.dll  <--- put here the release version
toolsdebugYourLib.1.0.0.dll  <--- put here the debug version
buildYourLib.targets  

El contenido del archivo de objetivos:


     
    
    
    
    
    

Los dlls en liberación La carpeta se agregará automáticamente como referencias creando lo siguiente en el archivo del proyecto:




¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *