我的SSDT项目文件中有一个AfterBuild步骤。这一步可能需要一些时间,所以我只想在SSDT项目中发生变化时运行此步骤。
要为C#项目执行此操作,我正在使用它:
<Target
Name="AfterBuild"
Condition="'$(_AssemblyTimestampBeforeCompile)' != '$(_AssemblyTimestampAfterCompile)'">
不幸的是,这对于SSDT项目不起作用。会有Condition=''
吗?有没有人可以查看有关SSDT项目中有效的条件的文档?
答案 0 :(得分: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目标在增量构建期间执行。构建后事件将仅在项目构建的第一次(加载后)以及重新构建时运行。