У меня есть файл .csproj
, в котором я объявляю некоторые сгенерированные файлы:
<ItemGroup>
<AutoGenerated Include="generated\*.cs;generated\Models\*.cs"/>
</ItemGroup>
Используется как Outputs
для задачи:
<Target Name="GenerateFilesFromTemplate" BeforeTargets="BeforeBuild;BeforeRebuild"
Inputs="sometemplatefile"
Outputs="@(AutoGenerated)">
<Exec
Command="somegenerator.exe ... "
Outputs="@(AutoGenerated)"/>
</Target>
В generated/
добавлен .gitignore, поэтому сгенерированные файлы не являются частью системы контроля версий.
Моя проблема в том, что эта установка не загружается сама. Поскольку изначально папка generated
пуста, сборка пропускает задачу создания файлов, поскольку она не имеет выходных данных:
GenerateFilesFromTemplate:
Skipping target "GenerateFilesFromTemplate" because it has no outputs.
Я чувствую, что делаю это неправильно или я упускаю очевидное. Я знаю, что могу удалить Inputs
и Outputs
на Task
, и тогда он будет генерировать файлы при каждой сборке. Но генерация длится долго, и я хочу избежать этого, если в этом нет необходимости (файл шаблона не изменился). Как сделать самозагрузку сборки и сгенерировать файлы при первой сборке или при необходимости?