我的VS解决方案中的十几个项目具有相同的一行:
<PostBuildEvent>
<Command>signtool sign /f ..\Certificates\MyCert.pfx /fd sha256 "$(TargetPath)"</Command>
</PostBuildEvent>
我知道因为它正在使用msbuild,所以有一种方法可以拥有一个共同的目标并让每个项目引用它,但我很难为它提出确切的语法。
答案 0 :(得分:1)
使用以下内容创建一个新文件,我们称之为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为后期构建添加其他目标。 E.g:
<PropertyGroup>
<PostBuildEventDependsOn>$(PostBuildEventDependsOn);MyAdditionalPostBuildTarget</PostBuildEventDependsOn>
</PropertyGroup>
<Target Name="MyAdditionalPostBuildTarget">
<!-- add any actions here -->
</Target>
和