visual vista usar temas tag studio previa para iconos extensiones configurar como code visual-studio-2010 msbuild code-generation build-process customtool

visual-studio-2010 - vista - todo visual studio code



Paso a paso, ¿cómo agrego un paso de compilación personalizado para cada archivo de un tipo dado en Visual Studio 2010? (1)

Comience agregando un ItemGroup personalizado a su archivo de proyecto.

Como abajo:

<ItemGroup> <CustomBuild Include="faq.txt"> <Message>Copying readme...</Message> <Command>copy %(Identity) $(OutDir)%(Identity)</Command> <Outputs>$(OutDir)%(Identity)</Outputs> </CustomBuild> </ItemGroup>

A continuación, cree un destino personalizado y defina en qué parte del proceso de compilación desea ejecutar sus objetivos personalizados en el proceso de compilación.

Los siguientes enlaces explican más detalladamente y paso a paso.

Espero que esto ayude.

Tutorial: uso de MSBuild para crear un proyecto de Visual C ++

Cómo agregar herramientas de compilación personalizadas a proyectos de MSBuild

Note : En la versión actual, el IDE no admite la creación de nuevas reglas. Por esa razón, la forma más fácil de usar un archivo de reglas de un proyecto que se creó con una versión anterior de Visual C ++ es migrar el proyecto a la versión actual.

El problema

  1. Tengo un montón de archivos personalizados en un proyecto de visual studio 2010.
  2. Necesito ejecutar una herramienta en esos archivos personalizados cuando cambian.
  3. La herramienta genera archivos .h incluidos por archivos existentes .cpp.
  4. Me gustaría que la herramienta se ejecute como parte del proceso de construcción.
  5. Debe ejecutarse desde dentro de Visual Studio, pero lo ideal es que también se pueda ejecutar como parte de un proceso msbuild.

Soluciones sub-estándar existentes

En cada archivo, cada vez que lo agrego, puedo ir a la configuración del archivo, configurar el Tipo de elemento como Herramienta de compilación personalizada y, a continuación, en el cuadro de diálogo Herramienta de compilación personalizada, configurar los parámetros de la línea de comando, configurar las salidas (codificadas) y establecer las dependencias adicionales (codificadas).

Obviamente, esta es una solución pobre porque es una cantidad de trabajo no trivial y propenso a errores cada vez que agrega un nuevo archivo del tipo personalizado.

La solucion deseada

Configuré el estudio visual que para cualquier archivo de extensión .foo, ejecuta tool bar.exe, cuando cambia el archivo .foo, antes de compilar el código CPP.

Cosas que he intentado

Basado en esto: http://msdn.microsoft.com/en-us/library/3e889s84(v=vs.100).aspx Intenté configurar un archivo .targets y .xml. Sin embargo, no puedo descubrir cómo crear un nuevo Tipo de artículo tal que aparezca en visual studio, ni puedo descubrir cómo hacer que se aplique mágicamente a cada archivo de tipo .foo. Además de eso, no he pensado en qué parte de eso se vincula con algo que describa el acto de llamar a mi herramienta bar.exe.

Intenté buscar en todos los archivos xml / target de visual studio para hacer un seguimiento de los tipos de elementos existentes y determinar cómo se traducen en acciones de compilación reales. Siempre termina en la pared de ItemType, donde hay un grupo descrito en ProjectItemsSchema, pero no puedo encontrar dónde se implementan ni cómo puedo implementarlos yo mismo.

La documentación de MSDN ha sido un completo fracaso, y creo que he leído cada página potencialmente relacionada diez veces, sin ningún resultado.

En Visual Studio 2008, tuve este tipo de cosas trabajando con un archivo .rules que se veía así:

<?xml version="1.0" encoding="utf-8"?> <VisualStudioToolFile Name="Foo Build Rules" Version="8.00" > <Rules> <CustomBuildRule Name="FooBuild" DisplayName="FooGen" CommandLine="../../tools/FooGen.exe [inputs]" Outputs="$(InputName).h" AdditionalDependencies="*.foo" FileExtensions="*.foo" ExecutionDescription="Generating Foos..." > <Properties> </Properties> </CustomBuildRule> </Rules> </VisualStudioToolFile>

Sin embargo, esta funcionalidad ha quedado obsoleta en 2010, y no he podido averiguar cómo replicarla con el nuevo sistema.

¿Ayuda?