У меня есть "Custom Tool" для 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 самостоятельно, либо при адаптации процессора)?
Интересно, что статья Использование MSBuild в MSDN гласит:
Доступны генераторы одиночных файлов только во время разработки, но задачи MSBuild могут использоваться во время разработки и наращивание времени. Для максимальной гибкости, поэтому используйте задачи MSBuild для преобразовывать и генерировать код. Для большего информацию, см. Элементы проекта (Visual Studio SDK).
Обновление: Я взломал этот особый инструмент в задачу msbuild, но это не очень. Я все же предпочел бы ухоженное общее решение. Я разместил источник в своем блоге.