解决方案中的全球postbuildevent

时间:2013-02-07 01:35:13

标签: msbuild target

我的VS解决方案中的十几个项目具有相同的一行:

<PostBuildEvent>
  <Command>signtool sign /f ..\Certificates\MyCert.pfx /fd sha256 "$(TargetPath)"</Command>
</PostBuildEvent>

我知道因为它正在使用msbuild,所以有一种方法可以拥有一个共同的目标并让每个项目引用它,但我很难为它提出确切的语法。

1 个答案:

答案 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>