1

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

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

我知道,因为它使用的是 msbuild,所以有一种方法可以有一个共同的目标并让每个项目都引用它,但我正在努力为此想出确切的语法。

4

1 回答 1

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 将其他目标添加到后期构建。例如:

<PropertyGroup>
    <PostBuildEventDependsOn>$(PostBuildEventDependsOn);MyAdditionalPostBuildTarget</PostBuildEventDependsOn>
</PropertyGroup>

<Target Name="MyAdditionalPostBuildTarget">
    <!-- add any actions here -->
</Target>

于 2013-02-07T01:56:43.947 回答