visual studio vscode Build NuGet Package automáticamente incluyendo dependencias referenciadas




visual studio code path intellisense (3)

Quiero ejecutar un repositorio NuGet local / interno . Creo que he descubierto cómo "reutilizar" los paquetes existentes de NuGet incluyéndolos en un proyecto ficticio usando NuGet y escaneando el archivo del paquete para tomar mis archivos .nupkg caché .nupkg , pero ...

¿Cómo se crea un paquete nuget ( .nupkg ) de un proyecto, que incluye automáticamente todas las dependencias dll y no solo las que se obtienen a través de NuGet?

Específicamente:

  1. Crea una solución
  2. Agregar un nuevo proyecto
  3. Agregue referencias a varios archivos .dll / otros proyectos <- esta es la parte que falta
  4. Agregue paquetes NuGet a través del administrador de paquetes / cmdline / whatever
  5. algo crea automáticamente .nupkg

Por lo que he encontrado, se supone que debes hacer cosas como

  • edite manualmente su archivo .csproj para agregar <BuildPackage>true</BuildPackage> para incluir dependencias
  • crear manualmente un archivo .nuspec y listar manualmente sus dependencias ( ¿similar? )
  • ejecute manualmente el nuget pack en su archivo .nuspec

Pero todo es manual, lo cual es estúpido. Incluso las soluciones semiautomáticas siguen siendo torpes o medio manuales:

Me conformaré con algo que crea automáticamente un manifiesto .nuspec partir de las referencias del proyecto. Luego, teóricamente, ese + el evento de compilación nuget se puede enrollar en un paquete de compilación / proyecto nuget, que es lo que realmente quiero ver.


¡Mira esto!

La solución que encontré es una extensión para Visual Studio: https://visualstudiogallery.msdn.microsoft.com/fbe9b9b8-34ae-47b5-a751-cb71a16f7e96/view/Reviews

Simplemente agrega un nuevo proyecto llamado Nuget Package NuGet Package

¡Entonces estás agregando proyectos interesantes a referencias y BOOOM! Todas las dependencias y directorios de archivos se agregan automáticamente. Si desea modificar los datos de NuSpec, haga clic derecho en el proyecto y vaya a Propiedades, luego modifique lo que desee. Generado NuSpec y nupkg estará en la carpeta obj de su nuevo proyecto. Espero que ayude ;).


Para otros Googlers, puede usar esto si está usando el archivo NuGet.targets para ejecutar NuGet Pack:

<Target Name="PrePackage" BeforeTargets="BuildPackage">
  <PropertyGroup>
    <BuildCommand>$(BuildCommand) -IncludeReferencedProjects</BuildCommand>
  </PropertyGroup>
</Target>

Su punto n. ° 3 ( Agregar referencias a varios archivos .dll / otros proyectos <- esta es la parte que falta ) realmente contiene dos problemas diferentes: (1) agregar referencias a varios archivos dll, y (2) agregar referencias a otros proyectos en la misma solución

El número (2) aquí ha recibido un poco de soporte adicional a partir de NuGet 2.5 . Puede agregar una opción para incluir referencias a otros proyectos en la misma solución al crear un paquete NuGet para un proyecto:

nuget pack projectfile.csproj -IncludeReferencedProjects

Si projectfile.csproj referencia a cualquier otro proyecto en su solución que también esté expuesto como paquetes NuGet, los paquetes NuGet de estos proyectos se agregarán como dependencias. Si hace referencia a proyectos en su solución que no se exponen como paquetes NuGet, sus dlls se incluirán en este paquete NuGet.

En cuanto a (1), si a menudo agrega dlls a sus proyectos que no están disponibles como paquetes NuGet, puede crear sus propios paquetes (internos) NuGet con estos archivos. Si luego agrega estos dlls como un paquete NuGet en lugar de los archivos directamente, este paquete NuGet será una dependencia en el paquete NuGet de su proyecto.





nuget-package