2011-01-23 30 views
32

Làm cách nào để xuất một giá trị biến cho nhật ký từ MSBuild?Cách xuất giá trị biến cho nhật ký từ MSBuild

Tôi đang cố gắng gỡ lỗi tập lệnh MSBuild và muốn xuất một giá trị biến cho nhật ký.

+0

Tôi nghĩ rằng câu hỏi này có thể giúp giải quyết vấn đề của bạn. http://stackoverflow.com/questions/2968077/trouble-with-outputting-msbuild-variables – awright18

Trả lời

55

Bạn có thể thực sự debug msbuild tập lệnh với VS2010 ngay bây giờ. Nó đòi hỏi một số hack và nó không phải là chính thức hỗ trợ nhưng nó là một lựa chọn.

Nếu không, hãy sử dụng tác vụ Message. Các quy tắc thông thường để tham chiếu Properties, ItemsItem Metadata (cũng được gọi là batching) áp dụng.

Ví dụ này:

<Project DefaultTargets="Build" 
     xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ItemGroup> 
    <TestItem Include="test1" /> 
    <TestItem Include="test2" /> 
    <TestItem Include="test3" /> 
    </ItemGroup> 
    <PropertyGroup> 
    <TestProperty>Property Value</TestProperty> 
    </PropertyGroup> 

    <Target Name="TestMessage" AfterTargets="Build" > 
    <!--Use $(Property Name) to reference a property--> 
    <Message Text="$(TestProperty)" Importance="high"/> 
    <!--Use @(Item Name) to output a semi-colon separated list of items on one line--> 
    <Message Text="@(TestItem)" Importance="high"/> 
    <!--Use %(Item Name.Metadata Property Name) to call the Message task once for each item.--> 
    <!--This will output each item on a separate line--> 
    <Message Text="%(TestItem.Identity)" Importance="high"/> 
    </Target> 
</Project> 

Sẽ tạo ra sản lượng này:

Property Value 
test1;test2;test3 
test1 
test2 
test3 
+3

Để làm cho câu trả lời của bạn dễ sử dụng hơn, hãy xem xét thêm thuộc tính Importance = "high" vào mỗi phần tử Message. Bằng cách này, các thông báo sẽ được hiển thị theo mặc định khi bạn gọi msbuild hoặc nếu bạn nhìn vào đầu ra xây dựng trong VS –

+3

Ngoài ra, để móc điều này nhanh chóng, bạn có thể muốn thêm Mục tiêu bạn vừa xác định trong csproj hiện có và thêm một BeforeTargets = "Xây dựng" cho mục tiêu. Sau đó, chỉ cần xây dựng với VS và nhìn vào đầu ra xây dựng. –

+2

Đầu ra sẽ hiển thị chính xác ở đâu? Trong cửa sổ Output của Visual Studio (và "Show ouput from: Build")? Ngoài ra, những gì tôi đang đặt tập tin này? Tôi chỉ cố gắng thêm vào tập tin 'C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets', nhưng tôi không thấy gì trong đầu ra. – jbyrd

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