我有许多项目的解决方案。
在构建后事件中检查主项目的程序集版本,并从 Trac RSS 中提取与该版本关联的发行说明,并将其存储为 XML 文件以与应用程序一起提供。这是在构建后事件中完成的。
主程序集的项目的构建后事件:
Powershell -File "$(SolutionDir)scripts\makereleasenotes.ps1" $(TargetPath) $(ProjectDir)
这在 VS 中运行良好。
然而,当我们构建部署时,会发生许多其他步骤,因此有一个命令行 msbuild,它可以通过双击运行,它会执行构建并打包部署。
从这个过程运行时,构建后步骤似乎没有运行。
这是我们使用的命令脚本:
set app_main=%CD%
msbuild app.msbuild /target:Release;Cleanup
app.msbuild 有一个目标,然后包含其他目标:
<Target Name="Release" DependsOnTargets="CreateDir;BuildRelease;CopyFiles"/>
和:
<Target Name="BuildRelease" >
<MSBuild Projects="App.Web.Application.sln" Properties="Platform=$(Platform);Configuration=Release;
OutDir=$(ReleaseDir)\$(DTResult)\$(ReleaseConfiguration)\"
Targets="Clean;Rebuild">
<Output ItemName ="OutputFiles" TaskParameter="TargetOutputs"/>
</MSBuild>
etc.
因此,您可以看到我们的外部 msbuild 脚本委托给了解决方案,并且在我们的构建中没有单独的项目正在编译。
当解决方案设置为 msbuild 脚本中的目标时,是否应该运行从属项目的构建后脚本?
如果是这样,是什么阻止了我的运行?
如果不是,我假设我必须单独运行它,并为项目级宏提供等效参数(powershell 脚本用于检查程序集并写出发行说明 XML)?