Posteriormente a mirar en diversos repositorios y páginas al concluir hemos hallado la respuesta que te mostraremos más adelante.
Solución:
Usando powershell, solo cuando se hace la compilación de lanzamiento:if $(ConfigurationName) == Release (powershell Compress-Archive -Path '$(TargetDir)*.dll', '$(TargetDir)*.pdb', '$(TargetDir)*.config' -DestinationPath '$(SolutionDir)PublishOutputYourNameHere.zip' -Force)
Solo comprime los archivos dll, pdb y config.-Force
se utiliza para sobrescribir el archivo zip en cada compilación.
Por lo general, no pongo cosas como crear archivos zip, instaladores, paquetes NuGet, etc. en mi proyecto real.
¿Por qué? Porque cuando lo pongo ahí, se ejecuta cada vez Estoy compilando el proyecto en Visual Studio, por ejemplo, cuando estoy depurando.
Pero los archivos zip, los instaladores, etc. solo son necesarios cuando hago un lanzamientopor lo que no quiero esperar a que se vuelvan a generar cada vez que presiono F5 en Visual Studio.
Para hacer un lanzamiento, generalmente creo un archivo por lotes que ejecuta un archivo de proyecto de MSBuild, que crea todo lo que es necesario para hacer un lanzamiento.
En mi opinión, la creación de un archivo ZIP también pertenece a ese archivo de proyecto de MSBuild.
Puedes encontrar toda la información que necesitas en estas dos respuestas anteriores mías:
- Cómo crear un archivo por lotes básico y un archivo de proyecto de MSBuild
(la pregunta real es sobre la creación de 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 archivo de proyecto de MSBuild de ejemplo de uno de mis proyectos, que hace lo siguiente:
- construir el proyecto
- ejecutar pruebas unitarias
- crear dos carpetas de lanzamiento con archivos binarios (una DLL y una .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 ClickOnce para el .exe
- establece automáticamente el número de versión correcto para todo
Lo mejor de este enfoque es que puedo hacer un lanzamiento, que incluye todo lo que acabo de enumerar, con un solo clic (ejecutando un archivo por lotes).
Crear todo esto lleva algo de 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 lo ejecuto cuando realmente lo necesito.
Vaya a las propiedades de su proyecto y en la pestaña ‘Eventos de compilación’ escriba sus comandos en el área de eventos posteriores a la compilación. Los comandos allí se ejecutan como (o como) un archivo por lotes Cmd.
Además: hay algunos ‘makros’ disponibles allí, que pueden ayudar a consultar las carpetas del proyecto, etc. Échale un vistazo.
Y, para agregar al comentario de Jason, también puede llamar al archivo por lotes en sí mismo 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, se compilan después de la compilación y después de los eventos posteriores a la construcción. Si desea, por ejemplo, copiar los archivos de salida de estos objetivos CSC, debe hacerlo en un post-compile
evento.)
Tienes la opción de añadir valor a nuestra información asistiendo con tu veteranía en las aclaraciones.