2011-09-27 9 views
14

Digamos que tengo la siguiente solución con múltiples versiones del mismo código, cada una apuntando a un marco diferente y me gustaría generar un paquete nuget a partir de ella.Nuget - empaquetando una solución con múltiples proyectos (apuntando a múltiples frameworks)

SharedLib.sln 
    SharedLib.Net35.csproj 
    packages.config 
    SharedLib.Net40.csproj 
    packages.config 
    SharedLib.Phone.csproj 
    packages.config 
    SharedLib.SL4.csproj 
    packages.config 

El nupkg esperada tiene la siguiente estructura

SharedLib.1.0.nupkg 
    lib/net35/SharedLib.dll 
    lib/net40/SharedLib.dll 
    lib/sl4-wp/SharedLib.dll 
    lib/sl4/SharedLib.dll 

nuget.exe pack SharedLib.SL4.csproj determinará automáticamente que el marco objetivo SilverLight4 y colocar los archivos binarios en lib/sl4

Sé que puedo agregar un archivo SharedLib.SL4.nuspec con una sección <file> para incluir binarios de los otros proyectos, pero ¿hay alguna manera de hacer que nuget coloque automáticamente la salida de solución combinada en la estructura adecuada? ture (y también detectar dependencias en packages.config de todos los proyectos?

Respuesta

8

No, actualmente no hay otra forma de hacer esto que no sea escribir un script de compilación personalizado que coloque los archivos en el lugar correcto y luego ejecutar el paquete NuGet en ellos, o tomar el enfoque .nuspec que describió.

Esta es una característica que nos gustaría tener, pero no hemos pensado en una buena manera de hacerlo. Sin embargo, tu publicación solo me dio una idea.

Hoy puede señalar el paquete nuget en un archivo .csproj.

Podríamos considerar un enfoque que le permitiera apuntarlo a un archivo .sln y si los nombres de los proyectos siguen alguna convención, empacaríamos todos los proyectos en un solo paquete.

Si realmente desea esta característica, considere registrar un problema en el rastreador de problemas NuGet. http://nuget.codeplex.com/workitem/list/basic

+0

yo podría hacer eso aunque no estoy completamente hecho averiguar qué es lo que quiero :) 1. sería bueno señalar Nuget a una solución y lo han resolverlo todo 2. se Sería bueno si las diferentes versiones de framework dentro del paquete resultante pudieran tener diferentes dependencias. p.ej. la versión de WP puede necesitar un paquete adicional que proporcione tipos que no sean parte del núcleo de WP. Voy a marcar su respuesta como aceptada por ahora y pensar un poco más sobre el tema. –

+4

Correr nuget pack en un sln sería genial. Quiero empaquetar un conjunto de ensamblajes relacionados en un solo paquete para facilitar la administración de los paquetes separados. No son dependientes el uno del otro. – PenFold

+2

La razón por la que esta es una victoria es para servidores de compilación que son muy convenientes para compilar y publicar un paquete para un solo proyecto, pero se convierten en una pesadilla cuando necesita lo anterior. Para mí, también falta una historia crítica que hace que toda la función sea redundante. ¿Quién * no * necesita empaquetar para cada CLR? –

Cuestiones relacionadas