Dot-Net
如何呼叫重寫的 MSBuild 目標
在 MSBuild 中,您可以覆蓋
<Target />您自己的另一個文件中的 a。例如,文件中包含的AfterBuild目標Microsoft.Common.targets只需定義您自己的具有相同名稱的目標:<Target Name="AfterBuild"> <!-- Do something different --> </TargetName>你會看到這樣的註釋:
使用項目“XXXXX”中的目標“AfterBuild”覆蓋項目“C:\Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets”中的目標“AfterBuild”。
有沒有辦法呼叫原來的 AfterBuild 目標?
我想這樣做以檢測某些複雜的預設目標,然後執行原始行為。許多像 Build 這樣的目標都公開了一個可以用於此的 BuildDependsOn 屬性。許多其他人沒有 - 我想在不完全複製其內容的情況下覆蓋它們。
處理 MSBuild 腳本時,它還將處理導入的文件。結果將是整個腳本在記憶體中的單一規範表示。當遇到已經存在的目標時,先前的定義將被丟棄,因此無法呼叫原始目標。
我想這樣做以檢測某些複雜的預設目標,然後執行原始行為。許多像 Build 這樣的目標都公開了一個可以用於此的 BuildDependsOn 屬性。許多其他人沒有 - 我想在不完全複製其內容的情況下覆蓋它們。
如果您想先在目標上執行自定義的東西,然後再執行原始目標,為什麼不直接使用
BeforeTargets?所以而不是
<Target Name="AfterBuild"> <!-- custom AfterBuild overriding default AfterBuild --> </TargetName>只需使用
<Target Name="JustBefore_AfterBuild" BeforeTargets="AfterBuild"> <!-- custom AfterBuild just before default AfterBuild --> </TargetName>