2012-01-31 18 views
8

he incorporado la siguiente línea en el CI-construir a crear un paquete NuGet privada en cada generación:NuGet: incluir archivos .pdb y excluye la carpeta "Contenido"

nuget pack C:\Projects\Test\Test.vbproj -OutputDirectory \\nas1\NuGet 

El AssemblyInfo se lee (incluido el número de versión ) y se crea un paquete NuGet.
Me gustaría que el paquete incluya los archivos .pdb y que no contengan una carpeta "Contenido" (solo la 'lib').

¿Cómo puedo puedo cambiar el comando para hacer eso?

Respuesta

10

Lamentablemente, no creo que pueda excluir los archivos de contenido y, incluidos los archivos .pdb al empacar a través del proyecto. Podrías hacer una o la otra.

Primero, haga un archivo nuspec (el comando nuget spec lo hace rápido) y póngalo en la misma ubicación que su proyecto. Cuando empaca su proyecto, NuGet.exe tratará la especificación como un complemento de la información de su proyecto.

Para eliminar la carpeta de contenido, al empaquetar un proyecto que también tiene un archivo .nuspec, un nodo <files /> vacío en la especificación indicará que no desea ningún archivo de contenido, incluso si existe en el proyecto.

Para incluir los archivos de depuración, añadir algo como esto a su especificación:

<files> 
    <file src="bin\*.pdb" target="lib\net35\" />  
    </files> 

pero eso sería decir la herramienta que hace tener contenido, y luego se añadirían todas las otros archivos , también. En su lugar, podría hacer un symbol package para su proyecto.

Otra opción sería crear exclusivamente a partir de la especificación (nuget pack Test.nuspec) y especificar exactamente los archivos que desea incluir. Es más lento, pero le da control total sobre el contenido del paquete.

+3

Después de dar a este un poco más de pensamiento, supongo que es técnicamente posible hacerlo a través de la orden línea incluyendo el .pdb a través de la especificación (como se indicó anteriormente) y luego usando el indicador -Exclude para omitir los tipos de archivos que no desea.Pero tendría que excluir _every_ tipo de archivo único que no sea un dll o pdb que se incluiría en "contenido", que puede o no ser práctico para usted. Por ejemplo, esto excluiría los archivos config, xml y transform del paquete (e incluiría archivos pdb, ya que están configurados en .nuspec): 'nuget pack -Exclude ** \ *. Config; * * \ *. xml; ** \ *. transform' – brainiac10

+0

+1 para eliminar la carpeta de contenido con un nodo '' '' '' vacío. –

1

En los archivos de contenido que no desea empaquetar, necesita que tengan una Acción de compilación de "Contenido" en su proyecto (en la ventana de propiedades del archivo en Visual Studio, si ese es su IDE)?

Si es aceptable cambiar la acción de compilación a "Ninguno" (o cualquier otra cosa), entonces no terminará en la carpeta de contenido.

0

La siguiente solución funciona, si no le molesta incluir también los archivos fuente. Ignorar los archivos de contenido añadir un nodo tales vacío a su nuspec:

<files> 
</files> 

Y a continuación, ejecute:

nuget pack C:\Projects\Test\Test.vbproj -Symbols 
nuget push *.symbols.nupkg -Source \\nas1\NuGet 
+0

La solución vacía ya no funciona para mí. –

Cuestiones relacionadas