Использование «Пользовательского инструмента» в MSBuild - PullRequest
10 голосов
/ 12 января 2009

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

1 Ответ

1 голос
/ 12 января 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...