visual update studio paquete from create crear como dependencies package nuget

dependencies - update - El comando NuGet: pack NO incluye dependencias nuget



nuspec (5)

'' Nuget.exe spec A.csproj '' creará un archivo NuSpec muy delgado que no tendrá ninguna dependencia. Para nuestro proceso use un script powershell para agregar las Referencias del Proyecto y otras dependencias de los packages.config B.nuspec nodo <dependency> en B.nuspec .

'' Nuget.exe pack A.nuspec '' será correcto.

tengo la siguiente configuración:

  • Nuget.exe Version: 1.6.21205.9031
  • Proyecto A.csproj empaquetado en A.1.0.0.0.nupkg, y publicado en un repositorio de paquetes LOCAL alojado en mi IIS local (mi VS Nuget Extension puedo agregar el paquete A a un nuevo proyecto)
  • Proyecto B.csproj tiene una dependencia al paquete A que agregué con la extensión VS Nuget

Ahora, cuando corro

nuget spec

el B.nuspec es creado.

Entonces corro

nuget pack B.csproj -verbose

pero en el paquete B creado, su NO es una dependencia del paquete A. El comando nuget pack me dice que ha encontrado el archivo packages.config (que contiene la dependencia del paquete A), pero luego dice "Dependencies: None".

¿Qué me estoy perdiendo? ¿El problema podría ser que el paquete A solo se puede encontrar en mi repositorio de paquetes local? ¿Cómo puedo hacer que nuget.exe conozca este repositorio local?

¡Muchas gracias!


Creo que puedo haber descubierto esto ...

Nuestra solución de biblioteca tenía la Restauración de paquetes Nuget activada. Desactivé NuGet Package Restore, y después de eso, las dependencias del proyecto se incluyeron cuando creé los paquetes NuGet.

No estoy seguro de por qué las dependencias no se incluyeron en el paquete cuando se activó el paquete de restauración, pero bueno :).


nuget pack debe ser capaz de encontrar la carpeta de packages para resolver dependencias (ver http://nuget.codeplex.com/workitem/3097 ), ya sea en la misma carpeta que .csproj (siempre que haya un .sln archive un nivel arriba) o en una carpeta especificada en NuGet.Config .


Las dependencias me faltaban porque no tenía los archivos *.nupkg en la carpeta de packages para todos los paquetes que estaba usando.

Esto fue bastante difícil de rastrear, porque el resultado del nuget pack parecía funcionar:

Found packages.config. Using packages listed as dependencies

Había estado utilizando Visual Studio .gitignore y solo comenté la línea sobre "Restauración de paquetes" (porque quería comprometer mis paquetes), pero debería haber comentado dos. Debe tener un aspecto como este:

# NuGet Packages # *.nupkg # The packages folder can be ignored because of Package Restore # **/packages/*

Gracias a la respuesta de Rick Mohr para vincular al elemento de trabajo CodePlex 3097 , donde explica cómo se usa la carpeta de packages :

Como packages.config contiene solo una lista de paquetes, y no contiene una relación de dependencia entre esos paquetes, nuget necesita acceder a esos archivos de paquete para obtener la información de dependencia. Es por eso que necesita saber la carpeta de paquetes.

La información de dependencia a la que hace referencia se encuentra dentro de los archivos *.nupkg . Una vez que cambié el .gitignore y .gitignore todos los archivos *.nupkg faltantes, mi servidor de compilación TeamCity fue capaz de crear exitosamente mi paquete NuGet con las dependencias correctas.


Se hizo una pregunta similar aquí , y la respuesta explica que:

La razón por la que estos problemas estaban causando es porque NuGet busca la carpeta de paquetes de nivel de solución para decidir qué dependencias de paquete incluir (no muy seguro de cómo se realiza esta determinación). Si la ruta a esa carpeta de paquetes es incorrecta (como lo sería si NuGet utiliza el archivo de solución incorrecto), entonces no puede resolver las dependencias correctamente. Además, si la carpeta de paquetes está vacía, tampoco puede resolver las dependencias correctamente.

Tuve el mismo problema y agregar el archivo de solución a la carpeta del proyecto (anteriormente sin solución) me ayudó a resolver el problema.