2013-02-07 40 views
1

關於我的VS解決了十幾個項目都在同一行:全球postbuildevent

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

我知道,因爲它使用的MSBuild,還有一種方法可以有一個共同的目標,讓每個項目的參考這但我很努力想出這個確切的語法。

回答

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> 

+0

謝謝。適用於單個命令,但如果項目具有自己的命令,則需要添加到現有命令 – user156144

+0

請查看我對編輯的答案。 –