我的 VS 解决方案中大约有十几个项目具有相同的行:
<PostBuildEvent>
<Command>signtool sign /f ..\Certificates\MyCert.pfx /fd sha256 "$(TargetPath)"</Command>
</PostBuildEvent>
我知道,因为它使用的是 msbuild,所以有一种方法可以有一个共同的目标并让每个项目都引用它,但我正在努力为此想出确切的语法。
创建一个新文件,我们称之为 CommonDefinitions.targets,内容如下:
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PostBuildEvent>signtool sign /f ..\Certificates\MyCert.pfx /fd sha256 "$(TargetPath)"</PostBuildEvent>
</PropertyGroup>
</Project>
然后在要覆盖 PostBuildEvent 的每个文件中,添加以下行:
<Import Project="$(SolutionDir)\CommonDefinitions.targets" />
如果您想将其与自定义后期构建步骤合并,您将通过覆盖 PostBuildEventDependsOn 将其他目标添加到后期构建。例如:
<PropertyGroup>
<PostBuildEventDependsOn>$(PostBuildEventDependsOn);MyAdditionalPostBuildTarget</PostBuildEventDependsOn>
</PropertyGroup>
<Target Name="MyAdditionalPostBuildTarget">
<!-- add any actions here -->
</Target>
和