2009-01-12 21 views
10

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.Usando la "Herramienta personalizada" de Studio en MSBuild

Visual Studio crea los siguientes fragmentos de 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 el Template.in solamente es procesado por el estudio, pero no por MSBUILD, lo que puede llevar a cabo de fecha Designer.cs archivos.

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

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

generadores de una sola fila son accesibles en tiempo de diseño solamente, pero las tareas de MSBuild se pueden utilizar en tiempo de diseño y acumulación de tiempo. 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 acerca de , consulte Elementos del proyecto (Visual Studio SDK).


Actualización: he hackeado esta herramienta personalizada específica en una tarea msbuild, pero no es bastante. Todavía preferiría una solución genérica bien mantenida. Tengo posted the source en mi blog.

+1

Fui a un buen montón de problemas para escribir un SFG (ver http://www.codeproject.com/Articles/686405/Writing-a-Single-File-Generator) solo para darme cuenta al final que no No se crea automáticamente y no funciona con MSBuild. ¿Cuál es un mejor enfoque? No puedo acceder al enlace de tu blog. – Qwertie

Respuesta

1

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.

+0

buena pista. He agregado un ejemplo –

Cuestiones relacionadas