SSDT-выполнить шаг AfterBuild только в том случае, если модель изменилась?
У меня есть шаг AfterBuild в файле проекта SSDT. Этот шаг может занять некоторое время, поэтому я хотел бы выполнить этот шаг только в том случае, если что-то изменилось в проекте SSDT.
Чтобы сделать это для проекта C#, я использую следующее:
<Target
Name="AfterBuild"
Condition="'$(_AssemblyTimestampBeforeCompile)' != '$(_AssemblyTimestampAfterCompile)'">
К сожалению, это не работает для проекта SSDT. Есть ли такая Condition=''
воля? Есть ли у кого-нибудь документы, в которых я могу найти условия, допустимые в проектах SSDT?
1 ответ:
Добавьте в проект SSDT следующее:
<Project> <PropertyGroup> ... <RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent> </PropertyGroup> ... <Target Name="GetTimeStampBeforeBuild" BeforeTargets="BeforeBuild"> <ItemGroup> <ProjectOutputFiles Include="$(TargetPath)" /> </ItemGroup> <PropertyGroup> <_AssemblyTimestampBeforeCompile>%(ProjectOutputFiles.ModifiedTime)</_AssemblyTimestampBeforeCompile> </PropertyGroup> </Target> <Target Name="GetTimeStampAfterBuild" AfterTargets="SqlPrepareForRun"> <PropertyGroup> <_AssemblyTimestampAfterCompile>%(ProjectOutputFiles.ModifiedTime)</_AssemblyTimestampAfterCompile> </PropertyGroup> </Target> </Project>
Это предотвратит выполнение цели PostBuildEvent во время инкрементной сборки. Событие post-build будет выполняться только при первой сборке проекта (после загрузки), а затем также при повторной сборке.