2011-01-23 25 views
32

günlüğüne bir değişken değeri nasıl çıkış yapılır MSBuild'den günlüğe bir değişken değeri nasıl çıktılanır?MSBuild

Bir MSBuild komut dosyasını hata ayıklamaya çalışıyorum ve günlüğe bir değişken değeri vermek istiyorum.

+0

bu soru sorununuzu çözmeye yardımcı olabileceğini düşünüyorum. http://stackoverflow.com/questions/2968077/trouble-with-outputting-msbuild-variables – awright18

cevap

55

Şimdi VS2010 ile debug msbuild komut dosyalarını kullanabilirsiniz. Bazı korsanlık gerektirir ve resmi olarak desteklenmez, ancak bu bir seçenektir.

Aksi takdirde Message görevini kullanın. Properties, Items ve Item Metadata referanslarına yönelik normal kurallar (batching olarak da adlandırılır) geçerlidir.

Bu örnek:

<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> 

bu çıktıyı üretecek:

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

Cevabınızı daha kolay kullanabilmek için, Mesaj öğelerinin her birine Önem derecesi = "yüksek" öznitelik eklemeyi düşünün. Bu şekilde msbuild çağrıldığında veya varsayılan olarak VS –

+3

sürümüne girdiğinizde iletiler varsayılan olarak gösterilecektir. Ayrıca, bu hızlıca, varolan bir csproj'da tanımladığınız Hedefi eklemek ve bir BeforeTargets = eklemek isteyebilirsiniz. Hedefe "Build". Sonra sadece VS ile inşa et ve yapım çıktısına bak. –

+2

Çıktı tam olarak nerede görünecek? Visual Studio'nun Çıktı penceresinde (ve "Ouput'u Göster: Oluştur")? Ayrıca bunu hangi dosyaya koydum? Bunu sadece 'C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets' dosyasına eklemeyi denedim, ancak hiçbir şey göremiyorum çıktı. – jbyrd