Применение преобразований Web.Config за пределами Web Deployment - PullRequest
10 голосов
/ 22 июня 2011

Есть ли способ применить преобразования VS 2010 Web.Config вне развертывания в Интернете, скажем, во время отладки?Это дало бы мне большую возможность свободно переключаться между различными средами.

Ответы [ 2 ]

16 голосов
/ 22 июня 2011

Да, вы можете явно выполнить преобразование Web.config , вызвав задачу TransformXml MSBuild во время шага AfterBuild в файле проекта.

Вот пример:

<UsingTask
    TaskName="TransformXml"
    AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

<Target Name="AfterBuild" Condition="exists('Web.$(Configuration).config')">
    <!-- Generates the transformed Web.config in the intermediate directory -->
    <TransformXml
        Source="Web.config"
        Destination="$(IntermediateOutputPath)Web.config"
        Transform="Web.$(Configuration).config" />
    <!-- Overwrites the original Web.config with the transformed configuration file -->
    <Copy
        SourceFiles="$(IntermediateOutputPath)Web.config"
        DestinationFolder="$(ProjectDir)" />        
</Target>

Связанные ресурсы:

4 голосов
/ 20 декабря 2011

Приведенное выше решение послужило для меня отличной отправной точкой, но в итоге я получил следующее, которое не требует задачи копирования и не имеет проблем с ошибками при использовании файла.

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="AfterBuild">
  <TransformXml Condition="exists('$(TempBuildDir)\Web.$(Configuration).config')" Source="$(TempBuildDir)\Web.config" Destination="$(OutputPath)Web.config" Transform="$(TempBuildDir)\Web.$(Configuration).config" />
  <ItemGroup>
    <DeleteAfterBuild Include="$(OutputPath)Web.*.config" />
  </ItemGroup>
  <Delete Files="@(DeleteAfterBuild)">
    <Output TaskParameter="DeletedFiles" PropertyName="deleted" />
  </Delete>
  <Message Text="DELETED FILES: $(deleted)" Importance="high" />
</Target>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...