8

mam następny config w moim pliku Web.configmsbuild przekształcić jeden config kilka razy

<Target Name="UpdateWebConfigForProjectsBeforeRun"> 
    <ItemGroup> 
     <FilesToTransofm Include="ProjectsDeployBin\Web.*.$(Configuration).config"/>  
    </ItemGroup>  
    <Message Text="Transform file: %(FilesToTransofm.Identity)" /> 
    <TransformXml Source="web.config" 
        Transform="%(FilesToTransofm.Identity)" 
        Destination="web.config" /> 
    </Target> 

co próbuję zrobić jej uzyskać wszystkie pliki konfiguracyjne z katalogu ProjectsDeployBin i zastosować każdy plik do głównego pliku web.config.

Po pierwszej transformacji główny plik web.config jest zablokowany przez msbuild.

Jak mogę rozwiązać ten problem? Czy istnieje inny sposób na przekształcenie mojego pliku web.config przez zbieranie plików? Dzięki.

Odpowiedz

8

Jak zauważyłeś, zadanie TransformXml dostarczane z Visual Studio 2010 ma błąd, który pozostawia plik źródłowy zablokowany.

Aby obejść ten problem, można wykonać tymczasową kopię pliku źródłowego przed każdą transformacją. Ponieważ będziesz wykonywać wiele zadań dla każdego pliku transformacji (kopiowanie i przekształcanie), musisz zmienić na Target Batching zamiast Task Batching.

Przykład:

<ItemGroup> 
    <FilesToTransofm Include="ProjectsDeployBin\Web.*.$(Configuration).config"/>  
</ItemGroup> 

<Target Name="UpdateWebConfigForProjectsBeforeRun" 
     Inputs="@(FilesToTransofm)" 
     Outputs="%(Identity).AlwaysRun"> 
    <Message Text="Transform file: %(FilesToTransofm.Identity)" /> 
    <Copy SourceFiles="web.config" 
     DestinationFiles="web.pre-%(FilesToTransofm.Filename).temp.config" /> 
    <TransformXml Source="web.pre-%(FilesToTransofm.Filename).temp.config" 
       Transform="%(FilesToTransofm.Identity)" 
       Destination="web.config" /> 
</Target> 

Od szybkiego testu, wygląda jak ten błąd jest ustalona w Visual Studio 2012, ale nie jestem w stanie znaleźć odniesienia/źródło, które dokumentuje, że i original Connect bug nie jest już widoczny.

Powiązane problemy