2009-07-02 30 views
8

Tôi có một tệp mà tôi đã đặt bằng PowerShell có chứa số phiên bản của bản dựng của tôi. Tôi cần để có được điều này trong MSBuild vì vậy tôi có thể hành động trên nó trong kịch bản xây dựng của tôi. Nó có vẻ đơn giản đủ; Tôi chỉ muốn lấy nội dung của tệp và đặt thuộc tính cho giá trị đó.Sử dụng MSBuild, làm cách nào để đặt thuộc tính cho nội dung của tệp?

Tôi nghĩ có thể thực hiện nhiệm vụ Exec, thực hiện "thêm" trên tệp của mình và thu chuẩn sẽ thực hiện thủ thuật, nhưng dường như tôi không thể làm việc này. Có vẻ như những người khác đã có vấn đề với stdout và MSBuild là tốt. Dưới đây là những gì tôi đã cố gắng:

<Exec Command="more $(BuildDirectory)\version.txt" Outputs="stdout"> 
    <Output TaskParameter="Outputs" ItemName="BuildNumber" /> 
</Exec> 

Trả lời

8

Nhiệm vụ ReadLinesFromFile là những gì bạn muốn

<ReadLinesFromFile File="Version.Txt"> 
    <Output TaskParameter="Lines" Item="BuildNumber"/> 
</ReadLinesFromFile> 

mà nói, một cách khác để làm những gì câu hỏi của bạn có nghĩa là để lưu trữ bạn xây dựng thông tin num trong một tập tin xml , với một schema MSBuild

cái gì đó như

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<PropertyGroup> 
    <BuildNumber>10</BuildNumber> 
    <RevNumber>5</RevNumber> 
</PropertyGroup> 
</Project> 

và sau đó nhập thứ tệp e version.properties e vào tệp msbuild chính của bạn

+0

Cảm ơn! Tôi không thể tìm thấy nhiệm vụ đó. FYI, có một lỗi nhỏ trong đoạn mã đầu tiên của bạn. Đó là ITEMNAME thay vì Item: Sau đó, tôi có thể truy cập đầu ra bằng cách sử dụng "@ (BuildNumber)". –

+0

Ack - bây giờ tôi cần phải thay đổi từ một mục danh sách (@) thành một tài sản ($). Bất kỳ lời khuyên về điều này? –

+0

Tôi nghĩ rằng tôi đã tìm ra:

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