У меня есть «Пользовательский инструмент» для Visual Studio, позволяющий конвертировать некоторые файлы шаблонов в код. Для согласованности и мобильности я хотел бы иметь возможность запускать этот процессор шаблонов из MSBuild при сборке вне Visual Studio.
Visual Studio создает следующие фрагменты для файлов:
<!-- 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>
Проблема в том, что Template.in
обрабатывается только Studio, но не MsBuild, что может привести к устареванию Designer.cs
файлов.
Существует ли существующая задача MSBuild, которая может использовать IVsSingleFileGenerator
напрямую (в том числе для загрузки его местоположения из реестра) или мне нужно вызывать процессор вручную (либо путем выполнения указанной задачи MSBuild самостоятельно, либо путем адаптации процессора)?
Интересно, что статья Using MSBuild на MSDN гласит:
Доступны генераторы одного файла
только во время разработки, но задачи MSBuild
может быть использован во время разработки и
наращивание времени. Для максимальной гибкости,
поэтому используйте задачи MSBuild для
преобразовать и сгенерировать код. Для большего
информация, см. элементы проекта (визуальный
Studio SDK).
Обновление: Я взломал этот специальный пользовательский инструмент в задачу msbuild, но это не очень красиво. Я все еще предпочел бы хорошо поддержанное родовое решение. Я опубликовал источник в своем блоге.