Как заставить задачу msbuild выполнять преобразование конфигурации в наборе файлов?

Я пытаюсь преобразовать все файлы web.config в проекте, который у меня есть, вот моя древовидная структура:

  • Transform.bat
  • Преобразования
    • ConfigTransform.proj
    • Web.Transform.config
  • Веб-сайт
    • web.config
    • Представления
      • web.config

Файлов web.config больше, но идея состоит в том, что это найдет их все и применит к ним одно и то же преобразование конфигурации.

Я взял несколько подсказок из сообщения в блоге, которое я нашел , но я застрял на последнем шаге, фактическом преобразовании. Также в середине есть некоторая шероховатость, которая мне не очень нравится (Я не совсем понимаю, что делаю, и очевидно, что делаю это неправильно ). Вот где я на данный момент:


    

    
        ..\..\Website
        $(SitePath)\Web.config
        Web.Transform.config
        ..\N\N\

    

    
        <_FilesToTransform Include="$(SitePath)\**\web.config"/>
    

    

    

    
    

Мой файл Transform.bat выглядит так:

%systemroot%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe %CD%\Transforms\ConfigTransform.proj

Итак, когда я вызываю пакет, создаются соответствующие каталоги. Однако, как видите, мне пришлось проявить немного творчества с OutDir, сделав его..\N\N. По какой-то причине, если я этого не сделаю, путь OutDir будет точно таким же, как входной каталог. Так что мне, очевидно, нужно что-то изменить в MakeDir, но я не уверен, что именно.

Настоящая проблема возникает, когда он начинает выполнять преобразования. Я пытался сохранить исходный параметр TransformXml таким или подобным образом :

@(_FilesToTransformNotAppConfig->'%(FullPath)')

. Последнее дает мне ошибку «Не удалось открыть исходный файл :Формат данного пути не поддерживается». и первый дает мне этот вывод:

Build started 30-4-2012 14:02:48.
Project "D:\Dev\transform\DoTransforms\Transforms\ConfigTransform.proj" on node 1 (default targets).
Transform:
  Creating directory "..\N\N\..\..\Website\Views\".
  Transforming Source File:..\N\N\..\..\Website\Views\Web.config;..\N\N\..\..\Website\Web.config
D:\Dev\transform\DoTransforms\Transforms\ConfigTransform.proj(32,2): error : Could not open Source file: Could not find a part of the path 'D:\Dev\transform\DoTransforms\Website\Views\Web.config;\Website\Web.config'.
  Transformation failed
Done Building Project "D:\Dev\transform\DoTransforms\Transforms\ConfigTransform.proj" (default targets) -- FAILED.

Build FAILED.

Подводя итоги моих вопросов:

  1. Как мне избежать проблемы пути для OutDir? Я возился с несколькими путями, но я не могу понять это правильно.
  2. Как заставить задачу TransformXml принимать несколько файлов в атрибуте «Источник»?

8
задан Sayed Ibrahim Hashimi 2 May 2012 в 06:22
поделиться