Использование "Пользовательского инструмента" в MSBuild

У меня есть "Пользовательский инструмент" для 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, но это не красиво. Я все еще предпочел бы хорошо поддержанное родовое решение. Я разместил источник в своем блоге.

1 ответ

Когда вы указываете свой пользовательский инструмент из VisualStudio, что он добавляет в файлы проекта или решения? Поскольку они представляют собой просто файлы msbuild, вы можете использовать добавленный xml в качестве шаблона для ваших собственных файлов сборки.

Другие вопросы по тегам