visual terminen studio solucion retrasa restaurarse restaurar referencia que proyecto para paquetes paquete los instalar hasta hace faltan este equipo correctamente compilación administrar visual-studio-2010 msbuild nuget nuget-package

visual-studio-2010 - studio - la compilación se retrasa hasta que terminen de restaurarse los paquetes de bower o npm



Automatizar la creación del paquete NuGet como parte del proceso de compilación (9)

Creé una extensión de Visual Studio Studio tipo NuGet (.nuproj) llamada NuBuild que debería hacer lo que quiera. Le permite construir sus paquetes NuGet desde Visual Studio y MSBuild. Puede instalarlo desde la gallery o obtener la fuente en github .

Tengo un proceso de compilación automatizado que me gustaría extender para poder construir las bibliotecas que distribuyo a través de NuGet. Actualmente, ejecutar nuget.exe para crear los paquetes es una operación manual.

¿Cuál es la mejor manera de configurar VS 2010 para que mi paquete NuGet (*. Nupkg) sea el resultado final de una compilación de "Liberación"?

Tenga en cuenta que tengo otros archivos (contenido y herramientas) para algunos de los paquetes. Y, en la mayoría de los casos, tengo varios proyectos fusionados en un único paquete NuGet para admitir .NET 4, Silveright y Phone 7.

(Debo aclarar que el proceso "automatizado" existente es un simple corredor de archivos por lotes que construye una solución usando la línea de comando).

ACTUALIZAR

Quiero actualizar esta discusión porque el problema no se ha resuelto. Si bien el enlace @pravin suministrado es útil, no aborda el hecho de que tengo varios proyectos en un solo paquete, así como otros contenidos como scripts de PowerShell, configuraciones y transformaciones de códigos fuente, etc.

El mejor ejemplo que puedo usar es un ensamblaje que tenga una versión .NET 4 y Silverlight 5. Estos se distribuyen en el mismo paquete. No puedo usar un evento de creación posterior para crear el paquete porque el paquete depende de DOS proyectos.



Instale el paquete NuGet Powertools en su sln y agregará un objetivo de compilación para crear el nupkg y luego modifique su CI para ejecutar también esa tarea. http://nuget.org/packages/NuGetPowerTools


Instale el paquete nuget ''NuGet.for.MSBuild''. No se requiere ningún archivo ''.nuspec'' y la información requerida se tomará de AssemblyInfo.cs.

Establezca la construcción en modo ''Liberar''. Una vez creado, el archivo nupkg estará en la carpeta ''bin / Release''.

https://nuget4msbuild.codeplex.com/


Por lo que yo sé, no puedes.

En su lugar, hágalo correctamente y tenga un entorno / proceso de compilación adecuado que active un script de compilación en commit / push a su repositorio principal que haga lo siguiente:

  • Clone / pull changes.
  • Construir solución
  • Construir paquete (s).
  • Cargar paquetes en el servidor de paquetes.

Puede ejecutar TeamCity, CruiseControl.NET o algún otro servidor de CI en una VM o en su servidor de compilación existente.


Si se encuentra en un entorno TFS 2010, el proyecto NuGetter debería resolver el problema de crear paquetes nuget automáticamente. Crea un paquete para toda la construcción. De hecho, es un flujo de trabajo de construcción de TFS 2010 que hace el trabajo llamando a nuget.exe con algunos argumentos.


Una cosa que podría funcionar bien es crear un archivo personalizado MSBuild .proj. Podría definir un par de objetivos en el script personalizado, el primero en ejecutar la compilación en su solución. Un segundo objetivo para ejecutar después de la compilación usaría la tarea EXEC MSBuild para invocar la utilidad de línea de comandos nuget.exe. Luego, actualice su archivo batch-runner para ejecutar el ejecutable de msbuild que proporciona su archivo de proyecto personalizado como argumento. Es posible que ya esté utilizando MSBuild en su secuencia de comandos por lotes, que en ese caso sería simplemente una cuestión de intercambio de argumentos. Puede incluir su archivo de proj personalizado en los elementos de solución de su solución. Si lo hiciera, podría agregar fácilmente una referencia de herramienta externa en Visual Studio para probar rápidamente su script personalizado y asegurarse de que estaba creando y produciendo el paquete como esperaba.

Muestra MSBuild

Puede usar esto como un lugar de inicio:

<Project DefaultTargets="Compile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" > <PropertyGroup> <SolutionFile></SolutionFile> <NugetExecutable>C:/PathToNuget/nuget.exe</NugetExecutable> <NuspecFile></NuspecFile> </PropertyGroup> <Target Name = "Compile"> <MSBuild Projects="$(SolutionFile)" Properties="Configuration=Release" /> </Target> <Target Name = "Package"> <!-- You could use the MSBuild Copy task here to move the compiled code into a structure that fits your desired package format --> <Exec Command="&quot;$(NugetExecutable)&quot; pack $(NuspecFile)" /> </Target> </Project>

Entonces llamarías esto como:

"C:/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe" Build.proj /p:SolutionFile=PathToSolution/App.sln;NuspecFile=foo.nuspec


Una sugerencia simple que podría funcionar lo suficientemente bien ... simplemente póngalo como evento Postbuild en el archivo .csproj:

<PropertyGroup> <PostBuildEvent>$(SolutionDir)<YourPathToNugetHere>/NuGet.exe pack $(ProjectPath) -OutputDirectory ../../$(OutDir) -IncludeReferencedProjects -Symbols -Properties Configuration=$(Configuration)</PostBuildEvent> </PropertyGroup>

Esto recogerá su archivo .nuspec personalizado (que debe nombrarse como el archivo .csproj) y compilará .nupkg.

Eso es.

Incluso puede hacer esto simplemente dentro de la configuración de Visual Studio Project.


Ya estoy haciendo lo que quieres lograr en mi proyecto actual:

Cada ensamblaje está integrado en su propio paquete nuget adecuado, con dependencias en su lugar.

Lo resolví creando una carpeta de paquete en el proyecto para la que quería crear un paquete nuget. Ahí configuro un archivo nuspec con la información necesaria sobre el nupkg

Allí hago todas las carpetas y archivos inalterables allí necesarios para la estructura del paquete Nuget.

Agregué un paso posterior a la compilación en el proyecto que copia los archivos que recién se han integrado en la carpeta del paquete y ejecuta nuget.exe

Así que va:

  • Proyecto de construcción.
  • Copie la salida nuevamente en Package / Lib del proyecto.
  • Ejecute nuget.exe con el archivo nuspec en la carpeta del paquete.
  • Copie el resultado en la carpeta de salida junto al resto de la salida.

Nuget.exe tiene que estar en una carpeta fija en su sistema y en el servidor de compilación (solución sucia) o incluido en su compilación (menos sucio).

Buildscript:

Xcopy.exe /Y "$(TargetPath)" "$(ProjectDir)/Package/Lib" cd "$(ProjectDir)Package" "$(TargetDir)../Buildscripts/Nuget.exe" pack MyPackage.nuspec xcopy /Y *.nupkg "$(TargetDir)"

Para usar esto, lo único que debe cuidar es decidir dónde registrar el nuget.exe. Hice una carpeta de compilaciones de compilación en el nivel superior de mi árbol de desarrollo.