2014-11-05 130 views
0

我加入以下代碼到VISUALC++ 2010 .vcxproj文件只是第<project>標籤中:的MSBuild AfterBuild步驟

<PropertyGroup> 
    <PilotStationDirectory>\..\..\PilotStation\PilotStationApp\$(Configuration)</PilotStationDirectory> 
</PropertyGroup> 
<ItemGroup> 
    <MySourceFiles Include="$(TargetName).dll;$(TargetName).lib;$(TargetName).pdb" /> 
</ItemGroup> 
<Target Name="AfterBuild"> 
    <MakeDir Directories="$(PilotStationDirectory)" /> 
    <Copy SourceFiles="@(MySourceFiles)" DestinationFolder="$(PilotStationDirectory)" /> 
    <Message Text="###I AM HERE###" /> 
</Target> 

我已經設置了「MSBuild項目建設輸出/日誌級別」爲「正常」。我沒有看到日誌中的任何內容,也沒有任何文件正在被複制。

有什麼我必須做的,以使這項工作?

回答

2

一個項目只能有一個AfterBuild目標。放置很關鍵,請確保它在任何<Import>指令後出現,以便您可以確定它是最後一個,並且默認的一個被覆蓋。提高<Message>的優先級,以便始終可以看到它。

<?xml version="1.0" encoding="utf-8"?> 
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    ... 
    <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> 
    ... 
    <Target Name="AfterBuild"> 
    <Message Importance="High" Text="It works"/> 
    </Target> 
</Project> 

輸出:

1>------ Build started: Project: ConsoleApplication317, Configuration: Debug Win32 ------ 
1> ConsoleApplication317.vcxproj -> C:\projects2\ConsoleApplication317\Debug\ConsoleApplication317.exe 
1> It works 
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== 
+0

換句話說,試試你的AfterBuild目標移動到文件的末尾... – kreinsch 2014-11-05 19:29:49

+0

@HansPassant爲'BeforeBuild'任何不同意見嗎?我不能讓那個人現在工作。 – 2014-11-06 19:54:40

+0

@HansPassant我只是不確定我的'BeforeBuild'是什麼問題。我已經打開了一個單獨的問題,如果你有任何其他的見解:http://stackoverflow.com/questions/26789417/msbuild-beforebuild-step – 2014-11-06 21:09:56