CreateItem và CreateProperty đã lỗi thời trong MSBuild 3.5 (mặc dù sẽ luôn tiếp tục hoạt động, tất nhiên). Rõ ràng là chúng ta cần cú pháp quen thuộc cho ItemGroup và PropertyGroup để làm việc bên trong các mục tiêu.
Nhưng ItemGroup bên trong một mục tiêu có một số quyền hạn bổ sung đặc biệt. Nó có thể sửa đổi các mục: ví dụ, điều này sẽ thêm đúng cho tất cả các mục trong danh sách Tài nguyên có siêu dữ liệu có tên là Primary với giá trị true; chỉ khi chưa có Sao chép siêu dữ liệu:
<ItemGroup>
<Resources Condition=" '%(Primary)' == 'true' ">
<Copy Condition=" '%(Copy)' == '' ">true</Copy>
</Resources>
</ItemGroup>
Một ma lực khác: bây giờ bạn có thể xóa các mục khỏi danh sách.Ví dụ này sẽ xóa tất cả các mục khỏi danh sách Tài nguyên có loại siêu dữ liệu có giá trị Bitmap:
<ItemGroup>
<Resources Condition=" '%(Type)'=='Bitmap' " Remove="@(Resources)"/>
</ItemGroup>
Những quyền hạn ma thuật này chỉ hoạt động bên trong hiện tại, không phải bên ngoài.
Để biết chi tiết đầy đủ về công cụ này, tôi khuyên bạn nên đánh giá cao cuốn sách của Sayed Hashimi về MSBuild. Nó dễ dàng tìm thấy trên Amazon.
Nhóm Dan - msbuild.
Nguồn
2009-06-27 06:46:56
Cảm ơn bạn rất nhiều, đây chỉ là những gì tôi muốn biết! Tôi sẽ phải xem cuốn sách đó. – Jake
Đúng là cuốn sách tuyệt vời, tôi thích nó :) :) :) Cảm ơn bạn đã đọc. –
Tôi tìm thấy một sự khác biệt lớn mặc dù: CreateItem sẽ mở rộng các ký tự đại diện cho nó trong Bao gồm thông qua một phép biến đổi như trong khi khai báo ItemGroup sẽ không mở rộng nó . –