2013-04-07 11 views
10

Próbuję połączyć kilka plików podczas mojej kompilacji, ale sposób, w jaki próbowałem usunąć tabulatory i spacje pozostawiając wyjście niesformatowane.W jaki sposób połączyć pliki w MSBuild i zachować tabulatory i spacje

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

Jaki jest sposób zachowania formatowania?

+2

To pytanie może pomóc/wytłumaczyć: http://stackoverflow.com/questions/272518/msbuild-readlinesfromfile-all-text-on-one-line –

Odpowiedz

9

To, co skończyło się w obliczu tego samego problemu:

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

Jest to zmodyfikowana wersja this blog post ale stosując $([System.IO.File]::ReadAllText(...) zamiast zadania ReadLinesFromFile, jak zasugerowano w this answer.

+0

W VS2013 to nie działa. –

+0

Używam społeczności VS2013 i działa ona dla mnie. –

+0

VS2013 Premium V12.0..31101.00 Aktualizacja 4. Gdy plik zawiera tabulatory lub spacje, nie ma tego połączonego wyniku. Wszystkie linie zaczynają się od lewej krawędzi tekstu. Używam innych elementów niż lub , ale nie jest to ważne. BTW, jeśli ustawię wyjście kompilacji na "Diagnostics" VS drukuje, że ReadLinesFromFile jest wywoływany w celu. –

Powiązane problemy