有人可以請我指向關於MSBuild中的目標鉤子的引用嗎?創建MSBuild目標鉤子
我正在尋找一些東西,可以讓我定義目標在指定目標之前和之後運行。我知道這可以使用DependsOnTargets屬性完成,但我已經看到了使用目標鉤子的參考,並且我想探索該區域。
感謝, Zain公司
有人可以請我指向關於MSBuild中的目標鉤子的引用嗎?創建MSBuild目標鉤子
我正在尋找一些東西,可以讓我定義目標在指定目標之前和之後運行。我知道這可以使用DependsOnTargets屬性完成,但我已經看到了使用目標鉤子的參考,並且我想探索該區域。
感謝, Zain公司
可以找到一個內置的可重寫構建過程鉤子的好列表here.對於自定義目標,我唯一能想到的就是使用DependsOnTarget屬性(如您提到的)或BeforeTargets/AfterTargets屬性(如)小心,BeforeTargets/AfterTargets只有available in MSBuild 4.0
如果你瞭解DependsOnTargets背後的想法,然後打開在.NET SDK目錄中的文件Microsoft.Common.targets(C:\ WINDOWS \ Microsoft.NET \框架\ v3.5版本)。該文件定義了由Visual Studio創建的MSBuild任務和.Net項目的構建過程。尋找名爲BeforeXXXX和AfterXXXX的標籤。 BeforeBuild和AfterBuild在default.csproj文件中引用的 - 段:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
還有其他人,如清潔,重建等。
定義目標(或目標),以這些目標元素內執行,像這樣(創建一個目錄,或目錄列表基於目錄屬性的值:
<Target Name="CreateDir">
<MakeDir Directories="D:\Dogs.txt"/>
</Target>
然後包括在BeforeXXX目標的目標:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="BeforeBuild" BeforeTargets="CreateDir">
</Target>
</Project>
它看起來像BeforeTargets/AfterTargets是我找到引用的鉤子。不幸的是,他們並沒有爲DependsOnTargets構建完美的子目錄,因爲他們不會保證*目標何時運行,只是它會在某個其他目標之前/之後運行。 – 2011-03-01 22:09:41
BeforeTargets在* DependsOnTargets之後和目標本身之前運行*。 – radical 2011-03-01 22:30:52