2011-06-30 17 views
73

¿Hay alguna manera de hacer un paquete NuGet usando código compilado en modo de lanzamiento? ¿O hay alguna razón por la que solo debería publicar (poner a disposición localmente, en este caso) paquetes compilados en modo de depuración?Embalaje de proyectos NuGet compilados en modo de lanzamiento?

Cada vez que llamo al nuget pack desde mi directorio de proyectos, donde tengo el archivo nuspec a continuación, en el código que he compilado solo en modo de lanzamiento, se queja de no encontrar la DLL en la carpeta de depuración ("\bin\Debug\SomeProject.dll"). Si lo compilo en modo de depuración, esos archivos están allí y los empaqueta como debería.

<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata> 
     <id>$id$</id> 
     <version>$version$</version> 
     <authors>$author$</authors> 
     <owners>$author$</owners> 
     <iconUrl>http://somewhere/project.png</iconUrl> 
     <requireLicenseAcceptance>false</requireLicenseAcceptance> 
     <description>$description$</description> 
    </metadata> 
</package> 

Respuesta

131

se puede resolver de esta manera: NuGet.exe pack Foo.csproj -Prop Configuration=Release (the reference).

+7

Para cualquiera que quiera la historia breve del enlace (buena lectura, sin embargo), hubo un cambio de v1.3 a v1.4 que va desde un valor predeterminado de Release a un valor predeterminado extraído de un proyecto que solo se puede modificar en el archivo de proyecto directamente (sin opción de VS GUI). Para evitar que la propiedad de la línea de comandos modifique todas las llamadas futuras de 'nuget pack', edite el archivo XML del proyecto en su editor de texto favorito. – patridge

+2

¿Hay alguna forma de empaquetar una versión de versión y depuración en un paquete y luego hacer que mi proyecto utilice automáticamente la depuración uno frente a la versión uno dependiendo de si estoy en configuración de depuración frente a solución de liberación? –

+0

@JD: Hasta donde sé, no es posible, pero estaba pensando en contribuir con nuget. ¿Puedes explicar en qué escenario necesitarías esta función? ¿Cuándo será útil? – Giorgi

14

Si está usando un evento posterior a la generación y desea crear un paquete si el uso de depuración o Release configuración se puede configurar el evento posterior a la generación de comandos, así:

"<path to nuget tools>\NuGet.exe" pack "$(ProjectPath)" -Prop Configuration=$(ConfigurationName) 
1

Tener NuGet utilizar de forma automática cuando se ejecuta el modo de liberación nuget pack, haga lo siguiente:

  1. abrir su archivo .csproj en un editor de texto.
  2. encontrar la línea siguiente:

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> 
    
  3. En esta línea, reemplace Debug con Release.
  4. Guardar cambios.
Cuestiones relacionadas