En nuestro proceso de construcción, para cada proyecto utilizamos Post a la generación de eventos para copiar nuestros archivos ejecutables en un directorio de implementación. Que funciona peachy, pero el problema es que nos encontramos con problemas con los obsoletos los archivos después de realizar una Solución Limpia/Limpieza del Proyecto. Me gustaría establecer una «Limpia», evento que se elimina el archivo copiado y Visual Studio 2008 no parecen ofrecer una opción en la página de propiedades del proyecto.

Tiene:

Build Events:
   Pre-Build Event
   Pre-Link Event
   Post-Build Event
Custom Build Step
   General

De lo que me gustaría encontrar es alguna forma de ejecutar un comando arbitrario de la línea cuando el proyecto esté limpia.

InformationsquelleAutor | 2009-03-10

6 Comentarios

  1. 33

    Puede utilizar el MSBuild objetivo de sintaxis en el archivo csproj.
    e.g

      <Target Name="AfterClean">
        <Delete Files="$(OutDir)$(TargetName).exe" ContinueOnError="true" />
      </Target>

    Hay una manera clara y ordenada para editar su .csproj archivo directamente en el IDE de Visual Studio se describe en el MSBuild blog del equipo, pero este es mi primer post así que sólo puedo incluir un hipervínculo.
    (brevemente: Descargar el proyecto, a continuación, haga clic en ella para ver la entrada «Editar [proyecto].csproj» … su csproj vendrá en el IDE como un archivo xml con intellisense en los elementos y atributos. Maravilloso!)

    Una lista completa de personalizado Objetivos está aquí: http://blogs.msdn.com/b/msbuild/archive/2005/11/23/496396.aspx

    • Nota: también puede editar el .csproj archivo en el bloc de notas[++], entonces cuando se guarda, Visual Studio detecta para volver a cargar el proyecto. Para varios incesante de ensayos y errores, este fue un poco más rápido. No tiene el intellisense, aunque.
    • La pregunta es etiquetados con [c++] y [- visual c++] lo que implica que tendría una .vcproj archivo en vez de una .csproj archivo. Los formatos de archivo que parecen ser diferentes
  2. 8

    Para proyectos de Visual C++, es necesario agregar los archivos a la «Extensiones de Eliminar En Limpio» bajo la sección «General» del proyecto de las propiedades de configuración. A pesar de que afirma querer extensiones, es en realidad el uso de gotas y gustosamente rutas completas y ampliar MSBuild variables. Esto funcionó para mí:

    $(ProjectDir)\deployment\*.*

    No estoy seguro de si se puede eliminar directorios de esta forma, pero al menos puede obtener los archivos.

    • Esto no está funcionando para mí. No puedo especificar una ruta de acceso completa ni una relativa usando VS 2012
    • ¿Cómo que se muestran en el proyecto de XML?
  3. 3

    Si el uso de Propiedades del Proyecto «–> Propiedades de Configuración –> la Costumbre de Construir el programa de Instalación» usted tiene que recordar para llenar en las Salidas de campo, de lo contrario no funcionará.

    de:

    http://blogs.msdn.com/b/visualstudio/archive/2010/04/26/custom-build-steps-tools-and-events.aspx

    «Las Salidas de la propiedad es un delimitada por punto y coma de la lista de archivos, y debe hacer una lista de todos los archivos son generados como parte de la ejecución de su paso de generación personalizada. Si usted deja sus Salidas de propiedad vacía, su Paso de generación Personalizada nunca va a ejecutar, ya que MSBuild va a determinar que ninguna de las salidas están fuera de fecha. Si el paso no se generan archivos, pero usted todavía desea que se ejecute con cada generación, haciendo un falso nombre de archivo de hacer el truco, ya que el archivo nunca va a existir y MSBuild siempre va a determinar que el paso de generación personalizada está fuera de fecha.»

  4. 1

    Usted tendrá que editar el .csproj archivos a mano y agregar un «AfterClean» de destino.

    • Scott – Podría detalle cómo agregar el «AfterClean» target?
    • A qué te refieres .vsproj – no .csproj?
  5. 1

    No hay documentado manera de insertar personalizado de los pasos de la limpieza, por desgracia. Usted puede limpiar su salida en el evento pre-build, pero que todavía le deja artefactos alrededor de un sólo después de una limpieza.

    De MSDN, aquí está el orden de invocación de los diversos pasos de compilación:

    1. Pre-evento de generación
    2. Pasos de generación personalizada en archivos individuales
    3. Generador de Proxy
    4. MIDL
    5. Compilador de recursos
    6. El compilador C/C++
    7. Pre-eventos de Enlace
    8. Enlazador o Bibliotecario (según corresponda)
    9. BSCMake
    10. Paso de generación personalizada en el proyecto
    11. De la herramienta de despliegue.
    12. Evento posterior a la generación

      De MSDN: La comprensión de los pasos de generación personalizada

    • Me da una idea: Escribir limpiar la secuencia de comandos en Pre-Construcción, conjunto de Post-Construir sólo para ejecutarse en el éxito de construir, y a propósito de escribir un básico de error de sintaxis en el código. Construir (Pre-Build hace cosa costumbre.) Limpieza del Proyecto (limpieza).
  6. 0

    Los otros no hacen exactamente lo que yo quería, y me acabo de enterar de una mejor manera. Probado en VS2010 de C++ Win32 proyecto, ir a Propiedades del Proyecto –> Propiedades de Configuración –> la Costumbre de Construir la Instalación. Usted puede agregar una línea de comandos personalizada, y decirle VS lo que la operación a ejecutar el comando, antes o después.

    • No parece que la característica está trabajando para la Limpieza evento. Hay otros limpio eventos, como CppClean, CoreClean, y otros. No tuve tiempo de probarlos todos. Tal vez he cometido un error.

Dejar respuesta

Please enter your comment!
Please enter your name here