Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 SSDT-仅当模型已更改时运行后构建步骤?_Visual Studio 2012_Sql Server Data Tools - Fatal编程技术网

Visual studio 2012 SSDT-仅当模型已更改时运行后构建步骤?

Visual studio 2012 SSDT-仅当模型已更改时运行后构建步骤?,visual-studio-2012,sql-server-data-tools,Visual Studio 2012,Sql Server Data Tools,我的SSDT项目文件中有一个后构建步骤。这一步可能需要一些时间,所以我只想在SSDT项目中发生变化时运行这一步 为了在C#项目中实现这一点,我使用以下方法: <Target Name="AfterBuild" Condition="'$(_AssemblyTimestampBeforeCompile)' != '$(_AssemblyTimestampAfterCompile)'"> 不幸的是,这不适用于SSDT项目。是否有一个条件=''会发生这种情况?是否有任

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

为了在C#项目中实现这一点,我使用以下方法:

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


不幸的是,这不适用于SSDT项目。是否有一个
条件=''
会发生这种情况?是否有任何文档可以让我查看,以了解在SSDT项目中有效的条件?

将以下内容添加到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>

...
OnOutputUpdated
...
%(ProjectOutputFiles.ModifiedTime)
%(ProjectOutputFiles.ModifiedTime)

这将防止在增量生成期间执行PostBuildEvent目标。生成后事件仅在项目第一次生成(加载后)时运行,然后在重新生成时运行。

此操作已成功-谢谢;但也不适用于我的特殊情况。我试图做的是在构建之后运行一个步骤来处理一些T4模板——问题是这些T4模板只依赖于环境,而这些T4模板是在IDE中生成的。希望有人发现这个答案很有用!