visual-studio msbuild customtool

visual studio - Usando la "Herramienta personalizada" de Studio en MSBuild



visual-studio customtool (1)

Tengo una "Herramienta personalizada" para Visual Studio para convertir algunos archivos de plantilla en código. Para mantener la coherencia y la portabilidad, me gustaría poder ejecutar este procesador de plantilla desde MSBuild cuando construya fuera de Visual Studio.

Visual Studio crea los siguientes fragmentos para los archivos:

<!-- the template --> <None Include="Template.in"> <Generator>Template Processor</Generator> <LastGenOutput>Template.in.Designer.cs</LastGenOutput> </None> <!-- generated file --> <Compile Include="Template.in.Designer.cs"> <AutoGen>True</AutoGen> <DesignTime>True</DesignTime> <DependentUpon>Template.in</DependentUpon> </Compile>

El problema aquí es que Template.in solo es procesado por Studio, pero no por MsBuild, lo que puede llevar a archivos Designer.cs caducados.

¿Existe una tarea MSBuild existente que pueda usar IVsSingleFileGenerator directamente (incluso para cargar su ubicación desde el registro) o tengo que llamar al procesador manualmente (ya sea implementando dicha tarea MSBuild o adaptando el procesador)?

Curiosamente, el artículo Using MSBuild en MSDN dice:

Los generadores de un solo archivo son accesibles en tiempo de diseño solamente, pero las tareas de MSBuild se pueden usar en tiempo de diseño y tiempo de construcción. Para una flexibilidad máxima, por lo tanto, use las tareas de MSBuild para transformar y generar código. Para obtener más información, vea Elementos del proyecto (Visual Studio SDK).

Actualización: he pirateado esta herramienta personalizada específica en una tarea de msbuild, pero no es bonita. Todavía preferiría una solución genérica bien mantenida. Publiqué la fuente en mi blog.


Cuando especifica su herramienta personalizada desde VisualStudio, ¿qué agrega a su proyecto o archivos de solución? Como solo son archivos de msbuild, es posible que pueda usar el xml agregado como plantilla para sus propios archivos de compilación.