2012-01-20 20 views
67

Tôi đang cố gắng để có được đầu ra đơn giản bằng việc exec với msbuild:Làm thế nào có được đầu ra nhiệm vụ exec với msbuild

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="Test"> 
    <Exec Command="echo test output"> 
     <Output TaskParameter="Outputs" ItemName="Test1" /> 
    </Exec> 
    <Exec Command="echo test output"> 
     <Output TaskParameter="Outputs" PropertyName="Test2" /> 
    </Exec> 
    <Message Text="----------------------------------------"/> 
    <Message Text="@(Test1)"/> 
    <Message Text="----------------------------------------"/> 
    <Message Text="$(Test2)"/> 
    <Message Text="----------------------------------------"/> 
    </Target> 
</Project> 

Nhưng nhận được kết quả tiếp theo:

echo test output 
    test output 
    echo test output 
    test output 
    ---------------------------------------- 
    ---------------------------------------- 
    ---------------------------------------- 

Làm thế nào tôi có thể nhận ra bằng cách của tôi kịch bản?

+1

thể trùng lặp của [đầu ra Thu thập từ một nhiệm vụ exec MSBuild] (http://stackoverflow.com/questions/1519177/gathering-outputs-from-an-msbuild-exec-task) –

+0

dường như là đúng, nhờ tôi bỏ lỡ thông tin docuemntation – tbicr

+1

Tài liệu tốt thường không phải về những gì không thể, nhưng là gì. Có nói rằng, câu hỏi của bạn có vẻ là phổ biến, vì vậy có lẽ bạn nên thêm "nội dung cộng đồng" thích hợp và do đó cải thiện tài liệu MSDN. –

Trả lời

5

Tôi đã đến mức tôi rất thất vọng với những hạn chế của MSBuild, và những thứ có nghĩa vụ phải làm việc nhưng không (ít nhất là không phải trong mọi ngữ cảnh), mà bất cứ lúc nào tôi cần làm bất cứ điều gì với MSBuild, tôi tạo một nhiệm vụ xây dựng tùy chỉnh trong C#.

Nếu không có đề xuất nào khác đang hoạt động, thì bạn chắc chắn có thể làm theo cách đó.

+2

Tôi cảm thấy nỗi đau của bạn - mặc dù nhiệm vụ tùy chỉnh của tôi là một tập lệnh python. – NetworkBurger

+0

Dễ hiểu nhưng tôi nghĩ MSBuild là một cách có cấu trúc để thông tin đường ống vào đầu ra/bàn giao tiếp lỗi. Mặc dù tôi chắc chắn cảm thấy rằng đó là một bước trên tập tin batch –

+1

Tôi biết đây là waaaay xuống theo dõi từ khi bạn có vấn đề này, nhưng tôi chỉ có điều tương tự xảy ra và giải quyết nó bằng cách thiết lập ToolsVersion = "12.0" trong phần tử gốc ..hy vọng đây là một số trợ giúp :) –

1

Bạn có thể tạo đầu ra cho một tệp để đọc và đọc lại.

echo test output > somefile.txt 
109

Tin vui mọi người! Bây giờ bạn có thể nắm bắt đầu ra từ <Exec> kể từ .NET 4.5.

Như thế này:

<Exec ... ConsoleToMSBuild="true"> 
    <Output TaskParameter="ConsoleOutput" PropertyName="OutputOfExec" /> 
</Exec> 

Đơn giản chỉ cần:

  • Thêm ConsoleToMsBuild="true" vào thẻ <Exec> bạn
  • Chụp đầu ra bằng cách sử dụng tham số ConsoleOutput trong một <Output> thẻ

Cuối cùng!

Documentation here

+0

Bạn có thể liên kết đến tài liệu về điều này không? –

+2

Rất tiếc, ya. Đó là tại: http://msdn.microsoft.com/en-us/library/ms124731(v=VS.110).aspx –

+5

Tôi nhận được lỗi 'thuộc tính không được khai báo' ... –

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