2009-09-03 29 views
28

Tôi muốn tính toán đường dẫn trong tác vụ MsBuild, được sử dụng bởi tác vụ MsBuild khác. Cách tốt nhất để thực hiện điều này là gì?Quay lại đầu ra từ tác vụ MsBuild?

Đặt biến môi trường, in sang Bảng điều khiển, ...?

Trả lời

42

Sử dụng thuộc tính hoặc mục. MSBuild của bạn tính toán đường dẫn, trả về nó như là một thuộc tính và bạn sử dụng thuộc tính này làm đầu vào cho nhiệm vụ khác của bạn.

public class CalculatePathTask : ITask 
{ 
    [Output] 
    public String Path { get; set; } 

    public bool Execute() 
    {         
     Path = CalculatePath(); 

     return true; 
    } 
} 
<Target Name="CalculateAndUsePath"> 
    <CalculatePathTask> 
    <Output TaskParameter="Path" PropertyName="CalculatePath"/> 
    </CalculatePathTask> 

    <Message Text="My path is $(CalculatePath)"/> 
</Target> 

Nếu bạn cần phải vượt qua một giá trị giữa hai dự án MSBuild, bạn nên tạo một thứ ba mà sẽ gọi khác sử dụng MSBuild Nhiệm vụ và sử dụng TargetOutputs yếu tố để lấy lại giá trị mà bạn muốn.

+2

chỉ là một lưu ý ngắn: Trong trường hợp của tôi 'ItemName' không hoạt động. Ngay sau khi tôi thay đổi nó thành 'PropertyName' nó hoạt động như một sự quyến rũ. – sebagomez

+0

Đã cố gắng nhưng có tham số 'Thông số TaskParameter" không được tác vụ "MyCustomTask" hỗ trợ. Xác minh tham số tồn tại trên tác vụ và đó là thuộc tính thể hiện công khai. – jpierson

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