我在 MSBuild 中有一个构建后目标来复制一些构建输出。
这是 linkedin 作为对AfterBuild
目标(暴露于Microsoft.CSharp.targets
):
<Target Name="AfterBuild" DependsOnTargets="InstallUtil;CopyPostBuildFiles" />
如果构建实际上并未重新构建,是否有任何方法可以避免文件被复制?
例如,当 MSBuild 依赖性分析断言该项目不需要构建,因为它的源文件都没有更新时,它不会构建,但仍然执行我的复制目标。有什么办法可以防止这种情况发生吗?
我刚刚用谷歌搜索了这个并找到了这个多年的答案。我找到了一种方法,通过从核心目标中窃取一个想法,可以更轻松地做到这一点。覆盖 BeforeBuild 和 AfterBuild 并执行以下操作:
<Target Name="BeforeBuild">
<PropertyGroup>
<MyBeforeCompileTimestamp>%(IntermediateAssembly.ModifiedTime)
</MyBeforeCompileTimestamp>
</PropertyGroup>
</Target>
<Target Name="AfterBuild">
<CallTarget Condition="$(MyBeforeCompileTimestamp) !=
%(IntermediateAssembly.ModifiedTime)" Targets="MyTarget" />
</Target>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)