2009-05-11 25 views
10

Trong MSBuild, bạn có thể tự ghi đè một số <Target /> từ một tệp khác. Ví dụ các mục tiêu AfterBuild trong Microsoft.Common.targets tập tin đơn giản bằng cách xác định mục tiêu của riêng bạn có cùng tên:Làm thế nào để bạn gọi một mục tiêu MSBuild được ghi đè

<Target Name="AfterBuild"> 
    <!-- Do something different --> 
</TargetName> 

Bạn sẽ thấy một lưu ý như thế này:

mục tiêu Overriding "AfterBuild" trong dự án " C: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets "với mục tiêu" AfterBuild "từ dự án" XXXXX ".

Có cách nào để gọi mục tiêu AfterBuild gốc không?

Tôi muốn thực hiện điều này để cụ thể hóa các Mục tiêu mặc định phức tạp nhất định và sau đó thực hiện hành vi gốc. Nhiều mục tiêu như Xây dựng hiển thị thuộc tính BuildDependsOn có thể được sử dụng cho mục đích này. Nhiều người khác không - và tôi muốn ghi đè chúng mà không hoàn toàn sao chép nội dung của chúng.

Trả lời

12

Khi tập lệnh MSBuild được xử lý, nó cũng sẽ xử lý các tệp đã nhập. Kết quả sẽ là một đơn trong bộ nhớ đại diện kinh điển của toàn bộ tập lệnh. Khi một mục tiêu gặp phải đã tồn tại, định nghĩa trước đó bị loại bỏ, do đó không thể gọi đích ban đầu.

Sayed Ibrahim Hashimi

My Book: Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

Các vấn đề liên quan