zona visual valido una studio restringida recursos quite quitar puede procesar porque marca los internet esta desea archivos archivo c# visual-studio visual-studio-2012 msbuild

c# - valido - Zip archivos después de que la compilación se complete en Visual Studio



quite esta marca si desea procesar los archivos visual studio (3)

Tengo un requisito donde necesito comprimir algunos archivos después de crear un archivo de solución.

Se podría lograr esto automáticamente una vez que construyo mi proyecto en el modo Liberar / Depurar.


Normalmente no pongo cosas como crear archivos zip, instaladores, paquetes NuGet, etc. en mi proyecto real.
¿Por qué? Porque cuando lo puse allí, se ejecuta cada vez que estoy creando el proyecto en Visual Studio, por ejemplo, cuando estoy depurando.
Pero los archivos zip, los instaladores, etc., solo son necesarios cuando hago una versión , así que no quiero esperar a que se vuelvan a generar cada vez que presiono F5 en Visual Studio.

Para hacer un lanzamiento, normalmente creo un archivo por lotes que ejecuta un archivo de proyecto de MSBuild , que crea todo lo que es necesario para hacer un lanzamiento.
IMO, al crear un archivo ZIP, también pertenece a ese archivo de proyecto de MSBuild.

Puede encontrar toda la información que necesita en estas dos respuestas anteriores por mí:

  • Cómo crear un archivo por lotes básico y un archivo de proyecto de MSBuild
    (La pregunta real sobre cómo construir un instalador con WiX , pero al principio estoy creando un archivo de proyecto de MSBuild)
  • Cómo crear un archivo ZIP con MSBuild Community Tasks

Además, aquí hay un ejemplo de archivo de proyecto de MSBuild de uno de mis proyectos, que hace lo siguiente:

  • construir el proyecto
  • ejecutar pruebas unitarias
  • crear dos carpetas de publicación con binarios (una DLL y un .exe)
  • Crea dos archivos zip, uno para cada una de las carpetas con binarios
  • crear un paquete NuGet para la DLL
  • crear una configuración de ClickOnce para el .exe
  • Establece automáticamente el número de versión correcto para todo.

Lo mejor de este enfoque es que puedo crear una versión, que incluye todo lo que acabo de enumerar, con un solo clic (ejecutando un archivo por lotes).
La creación de todo esto lleva algún tiempo, pero como no es parte de la solución de Visual Studio, no se ejecuta cada vez que hago una compilación en Visual Studio; solo la ejecuto cuando realmente la necesito.


Vaya a las propiedades de su proyecto y en la pestaña "Crear eventos", escriba sus comandos en el área de eventos posteriores a la construcción. Los comandos allí se ejecutan como (o como) un archivo por lotes de Cmd.

También: hay algunos ''makros'' disponibles allí, lo que puede ayudar a consultar las carpetas del proyecto, etc. Revísalo.

Y, para agregar al comentario de Jason, también puede llamar al propio archivo por lotes como el comando posterior a la compilación.

(Una advertencia sobre los eventos posteriores a la compilación: se ejecutan después de la compilación. Pero si tiene objetivos CSC, estos se compilan después de la compilación y después de los eventos posteriores a la compilación. Si desea copiar los archivos de salida de estos objetivos CSC que necesita para hacerlo en un evento post-compile .)


Usando powershell, solo cuando se hace la versión de lanzamiento:
if $(ConfigurationName) == Release (powershell Compress-Archive -Path ''$(TargetDir)*.dll'', ''$(TargetDir)*.pdb'', ''$(TargetDir)*.config'' -DestinationPath ''$(SolutionDir)PublishOutput/YourNameHere.zip'' -Force)

Solo comprime los archivos dll, pdb y config.
-Force se utiliza para sobrescribir el archivo zip en cada compilación.