2011-10-19 19 views
5

Tôi đang triển khai khung công tác MSBuild để thúc đẩy việc xây dựng và triển khai nhiều dự án được tổ chức dưới dạng phân cấp.Cách truy xuất @ (TargetOutputs) mà không cần thực hiện bản dựng

<Target Name="_CoreBuild"> 
    <MSBuild Projects="@(Project)" Targets="Build" Properties="Configuration=$(Configuration)"> 
    <Output TaskParameter="TargetOutputs" ItemName="CompiledAssemblies" /> 
    </MSBuild> 
</Target> 

Để thực hiện đúng lôgic sạch/clobber, tôi muốn lấy lại danh sách các file sẽ được biên dịch nếu xây dựng được thực hiện với các tùy chọn hiện hành.

<Target Name="_CoreClobber" DependsOnTargets="_CoreClean"> 
    <!-- How to retrieve @(CompiledAssemblies) as if we were 
     building @(Project) and retrieving the @(TargetOutputs) item group. 
    --> 
</Target> 

Tôi đã thử các phương pháp khác nhau, bao gồm tạo tác vụ tùy chỉnh, trong đó tôi tạo tệp dự án tùy chỉnh nhập dự án ban đầu mà tôi muốn truy xuất thuộc tính/mục. Nhưng điều đó không cho tôi giá trị đáng tin cậy.

Có cách nào để truy xuất nhóm mục tiêu TargetOutputs của dự án MSBuild mà không thực sự thực hiện xây dựng không?

Trả lời

5

Đừng bận tâm.

tôi stumbled khi the following similar question, và figured tôi đã phải sử dụng các mục tiêu GetTargetPath, như vậy:

<Target Name="_CoreBuild"> 
    <MSBuild Projects="@(Project)" Targets="GetTargetPath" Properties="Configuration=$(Configuration)"> 
    <Output TaskParameter="TargetOutputs" ItemName="CompiledAssemblies" /> 
    </MSBuild> 
</Target> 
Các vấn đề liên quan