lys*_*cid 6 .net msbuild build-process build msbuild-4.0
我有一个MSBuild文件,用于构建*/ .sln文件(构建所有存在的.sln文件).
构建使用Build目标,因此如果没有对输入文件进行任何更改,则不应再次构建任何项目.
我想只在项目实际上再次构建时才执行一些自定义目标.
如何才能做到这一点?
无论编译/构建是否实际发生,都始终调用AfterBuild和AfterCompile.
sti*_*ijn 10
基本上你想要与PostBuildEvent例如相同的行为,所以我查了一下Microsoft.Common.Targets它是如何做的(这个文件总能提供一个很好的洞察如何使用msbuild).这是解决方案:
<PropertyGroup>
<RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
</PropertyGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="RunWhenBuild" AfterTargets="CoreBuild"
Condition="'$(_AssemblyTimestampBeforeCompile)'!='$(_AssemblyTimestampAfterCompile)'">
<Message Importance="high" Text="RunWhenBuild!!"/>
</Target>
Run Code Online (Sandbox Code Playgroud)
这就是发生的事情:当有一个命名属性RunPostBuildEvent与值OnOutputUpdated的CoreBuild目标的dependncies前和生成后最终将记录其输出文件的时间戳.如果它们相等,则输出不会构建.所以剩下的就是让目标运行CoreBuild并检查这些时间戳.
| 归档时间: |
|
| 查看次数: |
2157 次 |
| 最近记录: |