2013-04-07 19 views
10

Yapım sırasında birkaç dosyayı birleştirmeye çalışıyorum ancak çıktıkları biçim, biçimlendirilmemiş çıktıyı çıkaran sekmeleri ve boşlukları çıkarır.MSBuild dosyaları birleştirip, sekmeler ve boşlukları korur

<CreateItem Include="Scripts\ApplicationModule.d.ts; Scripts\AccountModule.d.ts; Scripts\FeedModule.d.ts;"> 
    <Output TaskParameter="Include" ItemName="ApplicationDefinitionFiles" /> 
</CreateItem> 

<ReadLinesFromFile File="%(ApplicationDefinitionFiles.FullPath)"> 
    <Output TaskParameter="Lines" ItemName="ApplicationDefinitionLines" /> 
</ReadLinesFromFile> 

<WriteLinesToFile File="Scripts\ApplicationDefinition.d.ts" Lines="@(ApplicationDefinitionLines)" Overwrite="true" /> 

Biçimlendirmeyi korumanın yolu nedir?

+2

Bu soru, yardımcı olabilir: http://stackoverflow.com/questions/272518/msbuild-readlinesfromfile-all-text-on-one-line –

cevap

9

Bu aynı sorunla karşılaştığında ile sona erdi budur: this answer önerildiği üzere

<Target Name="ConcatenateScripts"> 
    <!-- List all the files you want to concatenate. --> 
    <ItemGroup> 
    <ConcatFiles Include=" 
     Scripts\ApplicationModule.d.ts; 
     Scripts\AccountModule.d.ts; 
     Scripts\FeedModule.d.ts;"/> 
    </ItemGroup> 

    <!-- Read the contents of the files (preserving tabs/spaces). --> 
    <ItemGroup> 
    <FileContents Include="$([System.IO.File]::ReadAllText(%(ConcatFiles.Identity)))"/> 
    </ItemGroup> 

    <!-- Write the result to a single file. --> 
    <WriteLinesToFile File="Scripts\ApplicationDefinition.d.ts" Lines="@(FileContents)" Overwrite="true" /> 
</Target> 

<!-- Concatenate scripts on AfterBuild. --> 
<Target Name="AfterBuild"> 
    <CallTarget Targets="ConcatenateScripts"/> 
</Target> 

Bu, değiştirilmiş this blog post sürümü ama ReadLinesFromFile görevin yerine $([System.IO.File]::ReadAllText(...) kullanıyor.

+0

VS2013'te çalışmıyor. –

+0

VS2013 Topluluğu kullanıyorum ve benim için çalışıyor. –

+0

VS2013 Premium V12.0..31101.00 Güncelleştirme 4. Dosya, başlık veya başlıklara sahip olduğunda, birleştirilmiş sonuç bulunmuyor. Tüm satırlar sol kenardan metinle başlar. veya dışındaki diğer öğeleri kullanıyorum, ancak önemli değil. BTW, "Diagnostics" VS'ye çıkış oluşturursam VS, ReadLinesFromFile öğesinin hedefte çağrıldığını yazdırır. –