我有一个很长的afterbuild过程后,我的Visual Studio项目文件的构建目标后,如下所示。Visual Studio项目 - MSBuild目标 - AfterBuild - 条件 - 只有当二进制文件更新
问题是,即使当实际的源代码没有改变并且项目未被编译时,它仍然会在构建完成时运行AfterBuild目标。
如何在编译项目并在磁盘上写入或更新物理二进制文件时运行此项操作?
<Target Name="AfterBuild">
<Exec Command=""$(ProgramFiles)\Microsoft\ILMerge\ILMerge.exe" /copyattrs /log /target:library /targetplatform:4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319 /Lib:"$(TargetDir)\" /keyfile:"$(ProjectDir)\Plugin.snk" /out:"$(TargetDir)\$(AssemblyName).merged.dll" "$(AssemblyName).dll" "PluginCommandCommon.dll" "Common.dll"" />
<Copy SourceFiles="$(TargetDir)\$(AssemblyName).merged.dll" DestinationFolder="$(ProjectDir)..\PluginPackage\bin\$(Configuration)\" />
</Target>
你可以看看: http://stackoverflow.com/questions/516227/suppressing-afterbuild-targets-when-a-csproj-has-not-built- – 2012-02-28 12:47:58
是的,这看起来像答案是链接,将调查更多 – Simon 2012-02-28 13:02:07
无法真正理解链接中的答案,我想我错过了一些东西。实际上,我想要做的就是在项目构建完毕并且文件已写入bin目录时运行一些ms构建任务。 – Simon 2012-02-28 14:00:59