SSDT - 仅在模型更改后运行AfterBuild步骤?

时间:2014-08-29 02:43:08

标签: visual-studio-2012 sql-server-data-tools

我的SSDT项目文件中有一个AfterBuild步骤。这一步可能需要一些时间,所以我只想在SSDT项目中发生变化时运行此步骤。

要为C#项目执行此操作,我正在使用它:

<Target
    Name="AfterBuild"
    Condition="'$(_AssemblyTimestampBeforeCompile)' != '$(_AssemblyTimestampAfterCompile)'">

不幸的是,这对于SSDT项目不起作用。会有Condition=''吗?有没有人可以查看有关SSDT项目中有效的条件的文档?

1 个答案:

答案 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目标在增量构建期间执行。构建后事件将仅在项目构建的第一次(加载后)以及重新构建时运行。