Как настроить зависимости сборки задачи генерации кода? - PullRequest
0 голосов
/ 19 мая 2019

У меня есть 2 msbuild проекта A и B в одном решении Visual Studio 2019.A зависит от B.

  • B - это инструмент, который может генерировать код.
  • A содержит задачу для запуска этой генерации кода и создания файла C # (Stuff.cs) для компиляции.как часть A.

Моя цель - создать простую и интуитивно понятную инкрементальную сборку с минимальным количеством шаблонов.Если исходный код B изменен или сгенерированный файл не найден, это должно инициировать повторное выполнение задачи генерации кода, а затем перестроить A. (в противном случае не следует повторно генерировать код)

проблема в том, что это работает в первый раз, когда код еще не сгенерирован, но при втором изменении B он обходит этап генерации кода, когда A перестраивается.В нем просто говорится, что A «обновлен».

B - это исполняемый файл, который я запускаю внутри csproj A с Exec, например, так:

  <Target Name="GenerateStuff" BeforeTargets="CoreCompile" 
    Inputs="$(SolutionDir)\B\bin\$(Configuration)\B.exe" 
    Outputs="$(ProjectDir)\Stuff.cs">
      <Exec Command="$(SolutionDir)\B\bin\$(Configuration)\B.exe" />
  </Target>

Таким образом, для некоторыхпричина, по которой он не считает эти «входы» действительным триггером.

Я также ищу дополнительную документацию и примеры, связанные с этим.

1 Ответ

2 голосов
/ 19 мая 2019

Вы должны добавить B.exe в качестве входных данных в систему проекта, чтобы современная проверка Visual Studio вызывала MSBuild при изменении B.exe - это дополнительная эвристика, которую VS запускает еще до вызова MSBuild.

<ItemGroup>
  <UpToDateCheckInput Include="$(SolutionDir)\B\bin\$(Configuration)\B.exe" />
</ItemGroup>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...