2009-12-21 10 views
31

En Visual Studio (2008) es posible forzar el evento posterior a la compilación para que se ejecute un proyecto C++ incluso si el proyecto está activo -¿hasta la fecha?Visual Studio: ejecutar el evento Post-Build del proyecto C++ incluso si el proyecto está actualizado

Específicamente, tengo un proyecto que crea un DLL de servidor COM en proceso. El proyecto tiene un paso posterior a la compilación que ejecuta "regsvr32.exe $ (TargetPath)". Esto funciona bien en una "Reconstrucción", pero se ejecuta en "Crear" solo si se han realizado cambios en la fuente del proyecto.

Si realizo una "compilación" sin realizar ningún cambio, Visual Studio simplemente informa que el proyecto está actualizado y no hace nada, no se ejecuta el evento posterior a la compilación. ¿Hay alguna forma en que pueda forzar al Evento a correr en esta situación? Esto es necesario ya que, aunque la DLL está actualizada, la información de registro puede no serlo.

Respuesta

43

Puede usar la página de propiedades Custom Build Step para configurar un archivo por lotes para ejecutar. Esto se ejecuta si el Archivo especificado en la configuración de Salidas no se encuentra, o está desactualizado. Simplemente especifique allí algún archivo que no exista, y el paso de creación personalizado siempre se ejecutará. Se ejecutará incluso si su proyecto está actualizado, ya que el archivo de salida nunca se encuentra.

+0

No veo ninguna configuración de ** Salidas ** para un ** Paso de compilación personalizado **. ¿Dónde se encuentran las salidas ** ** – bpeikes

+0

He utilizado este concepto general de usar Exec en un objetivo AfterBuild eliminar los archivos de salida, al igual que <= "Exec Comando Del " $ (OutputPath) $ (assemblyname). * "" > –

+0

¡Oh, cómo debería uno saber eso sin StackOverflow ?! Aquí, en MSDN, hay información adicional sobre el orden de ejecución de los pasos de compilación y los eventos de compilación: https://msdn.microsoft.com/en-us/library/e85wte0k.aspx. Para mi caso, acabo de mover mi "Publicación". Build Event "para" Custom Build Step "y especificó un nombre de archivo en" Outputs "que no existe. Esto ejecuta de forma fiable el paso de compilación personalizado, incluso si el proyecto está actualizado. – j00hi

0

La información de registro está determinada en gran medida por lo que está en el archivo .rgs. Si ese archivo cambia, se construirá el proyecto. No estoy seguro de qué otra cosa puede cambiar el registro COM sin ensuciar el proyecto. ¿Le importa proporcionar más detalles sobre su situación particular?

+0

Por "la información de registro COM puede no estar actualizada", me refiero a que la información en el registro puede haber cambiado, no eso en el archivo .rgs. Me gustaría que el paso posterior a la compilación restablezca la información en el registro a lo que debería ser según los .rgs. – user200783

Cuestiones relacionadas