Obtuve un proyecto VS con un evento posterior a la construcción con un comando de línea de comandos que copia un archivo (.dll) en el directorio bin destino (depuración o versión). Cuando hago un "Limpiar" en el proyecto, todo se limpia, pero este archivo permanece. ¿Hay alguna manera de publicar eventos posteriores a la publicación para que también pueda eliminar este archivo?Necesito un "evento posterior a la limpieza" en Visual Studio
Respuesta
Puede editar el archivo de proyecto directamente y agregar el destino al final del archivo. BeforeClean
y AfterClean
son blancos como se explica aquí:
http://blogs.msdn.com/b/msbuild/archive/2005/11/23/496396.aspx
usted debería ser capaz de poner una tarea Eliminar en el objetivo.
EDITAR Simplemente probado este (proyecto del botón derecho -> descarga -> clic derecho -> editar) y el siguiente objetivo es lo que necesita:
<Target Name="AfterClean">
<Delete Files="$(TargetDir)\*.txt" />
</Target>
Esto funciona cuando se limpia el proyecto pero no la solución, funciona pero no al 100%.
Puede actualizar el archivo csproj para especificar un nuevo objetivo. Tendrás que hacer esto en un editor de texto.
Eche un vistazo a la documentación aquí: How to: Extend the Visual Studio Build Process.
Tendrá especial para cambiar la <Target name='AfterClean'>
que he encontrado que la respuesta de Leom Burke usando "Eliminar archivos" no funciona con comodines y no te dice que algo iba mal. Esto es lo que he hecho en su lugar -
<Target Name="BeforeClean">
<Message Text="Cleaning other files..."/>
<Exec Command="del $(ProjectDir)css\*.* /F /Q"/>
<Exec Command="del $(ProjectDir)images\*.* /F /Q" />
<Exec Command="del $(ProjectDir)js\*.* /F /Q" />
<Exec Command="del $(ProjectDir)usercontrols\*.* /F /Q" />
<Exec Command="del $(ProjectDir)MasterPages\*.* /F /Q" />
<Exec Command="del $(ProjectDir)App_Data\TEMP\*.* /F /Q /S" />
<Exec Command="del $(ProjectDir)App_Data\Logs\*.* /F /Q /S" />
</Target>
escribí lo anterior para eliminar archivos en una solución umbraco para que cuando hago un diff con lo que está en control de código fuente, no confundir los mocos de mí.
¿Por qué salir del proceso cuando MSBuild tiene una tarea de eliminación? –
Hace un tiempo cuando respondí esto, pero como mencioné, no funcionaba con comodines. –
Sé que este es un tema antiguo, pero puede hacer comodines con la función integrada incorporada.
<Target Name="AfterClean">
<ItemGroup>
<FilesToDelete Include="$(TargetDir)\*.txt"/>
</ItemGroup>
<Delete Files="@(FilesToDelete)" />
</Target>
Esta es la solución más elegante. Pero mira en qué versión de MSBuild estás. Las versiones anteriores procesarán el ItemGroup cuando se cargue el documento y las condiciones de carrera pueden provocar que sus archivos no se enumeren ni eliminen. –
creo que algo cambie con Visual Studio 2017.
Obras con la etiqueta: AfterTargets = "limpio"
<Target Name="AfterClean" AfterTargets="Clean">
<!-- Remove bin folder -->
<RemoveDir Directories="$(TargetDir)" />
<!-- Remove obj folder -->
<RemoveDir Directories="$(ProjectDir)$(BaseIntermediateOutputPath)" />
</Target>
Ver mi respuesta relacionada con el nombre del objetivo. – bvj
Sombrero de punta a @ scrat789 respecto AfterTargets.
para VS 2017, v15.6.0 Vista preliminar 2.0, que terminó con las siguientes:
<Target Name="MyDistClean" AfterTargets="Clean">
<Message Text="Deleting wwwroot\dist files" Importance="high" />
<Delete Files="$(ProjectDir)\wwwroot\dist\*.*" ContinueOnError="true" />
</Target>
algunas cosas:
- Aviso estoy usando un nombre de destino único, MyDistClean. Especificar el nombre, AfterClean, no funcionó.
- No fue necesario volver a cargar el csproj después de la edición para ejecutar/probar la tarea de limpieza.
- importancia del mensaje se establece alta para evitar cambiar el nivel de verbosidad MSBuild mencionado aquí en SO: AfterClean Target Doesn't Get Invoked When I Clean The Project
- MyDistClean tarea se procesó a la solución y alcance del proyecto.
Ésta es la tarea de mejora de borrar el directorio webpack dist sobre Clean:
<Target Name="MyDistClean" AfterTargets="Clean">
<ItemGroup>
<DistDir Include="$(ProjectDir)wwwroot\dist" />
</ItemGroup>
<Message Text="Deleting @(DistDir)" Importance="high" />
<RemoveDir Directories="@(DistDir)" />
</Target>
- 1. Cómo crear un evento personalizado de limpieza (post-limpieza) en Visual Studio 2008?
- 2. Evento posterior a la compilación en ejecución (F5) ¿En Visual Studio?
- 3. "Adjuntar al proceso" como un evento posterior a la construcción
- 4. ¿Podemos ejecutar un archivo .bat en la línea de comandos de evento de compilación posterior en Visual Studio?
- 5. Limpieza automática de ventana inmediata en Visual Studio
- 6. SharePoint guión falla cuando se ejecuta como un comando posterior a la implementación de Visual Studio
- 7. Creación posterior de Visual Studio: cambio a la unidad de solución
- 8. Visual Studio SDK - Evento Guardar evento de archivo
- 9. Cómo copiar el archivo debug * pdb utilizando la línea de comando de evento de compilación posterior en Visual Studio?
- 10. Visual Studio: ¿Varios comandos post-compilación?
- 11. Visual Studio: ejecutar el código de limpieza cuando se detiene la depuración
- 12. Cómo ejecutar un exe en un evento de compilación posterior
- 13. Personalización previa a la limpieza de MSBuild
- 14. Ir a la declaración en Visual Studio
- 15. Actualización del paquete Nuget local en el evento posterior a la construcción
- 16. ¿Cómo depurar un threadpool en Visual Studio?
- 17. Tienda C++ 0x funciones lambda en std :: map/vector para uso posterior en Visual Studio
- 18. Diferencia entre el evento KeyDown, el evento KeyPress y el evento KeyUp en Visual Studio
- 19. Evento de preconstrucción en Visual Studio reemplazando $ (SolutionDir) con * Undefined *
- 20. ¿Varios eventos previos a la compilación en Visual Studio?
- 21. Determinar la versión del ensamblaje durante un evento posterior a la construcción
- 22. Agregue un esquema XML a Visual Studio
- 23. Necesito un evento para detectar la conexión/desconexión de Internet
- 24. Cómo crear un evento de compilación asincrónico en Visual Studio (2008)?
- 25. Evento Visual Studio 2008 Post Build: solo se ejecuta en Reconstruir
- 26. ¿Por qué sale xcopy con el código 9009 en el paso posterior a la compilación de Visual Studio?
- 27. Refactorización fácil y rápida en visual studio
- 28. Cómo convertir la solución visual studio 2010 SP1 en la solución visual studio 2012?
- 29. Visual Studio: ejecutar el evento Post-Build del proyecto C++ incluso si el proyecto está actualizado
- 30. Ir a Definición en Visual Studio - Interfaces
Si está utilizando trago y se creó una tarea de limpieza a continuación, sólo hay que poner ' ' en lugar de ' '. –
christo8989