Вопрос

Я хочу получить преобразования Web.config, работающих локально, но, по-видимому, преобразование происходит только при развертывании.

Кто-нибудь знает о способе запуска MSBuild Target «TransformWebconfig», не проходя через процесс «Восстановить», а также указать и выводимый каталог, где выдвинуть преобразованный Web.config?

РЕДАКТИРОВАТЬ: Использование ответа Sawed, я создал .bat Файл, чтобы запустить задачу для меня:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Msbuild.exe "D:\Demo\Transformation.proj" /t:TransformWebConfig 

copy /Y  "D:\Demo\Web.config" "D:\MyProject\Web.config" 

del ""D:\Demo\Web.config"

«Transformation.Proj» - это копия кодового фрагмента извещений в ответ ниже. Просто укажите источник, цель и место назначения для преобразования. Новый файл в этом случае преобразованный «Web.config» будет в каталоге «D: Demo». Я просто копирую его, чтобы перезаписать Web.config и, наконец, удаляя сгенерированный файл в папке «Демо».

Кроме того, я создал макрос, чтобы запустить этот пакетный файл и выполнить для меня транформацию:

Public Module DoTransform
    Sub RunTransformBatchFile()
        Try
          Process.Start("D:\Demo\RunTransform.bat")
        Catch ex As System.Exception
            MsgBox(ex.Message)
        End Try
    End Sub
End Module

Вы также можете добавить кнопку на панели инструментов для запуска этой партии и / или назначить ярлык ключа для выполнения.

Это было полезно?

Решение

Если вы хотите преобразовать файл конфигурации без использования конвейера веб-публикации, вы просто используете задачу TransformXML вручную. Я написал подробный список в блоге на этом в http://seedodream.com/2010/04/26/Configtransformationsousoutsideofwebappbuilds.aspx.aspx., но вот высокие огни:

<Project ToolsVersion="4.0" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <UsingTask TaskName="TransformXml"
             AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>

    <Target Name="Demo">
        <TransformXml Source="app.config"
                      Transform="Transform.xml"
                      Destination="app.prod.config"/>
    </Target>
</Project>

Здесь я вручную трансформирую файл app.config с помощью файла transform.xml и файл назначения - app.prod.config.

Одна вещь, которую вы упомянули, имел возможность проводить преобразование локально при запуске приложения. Причина, по которой мы выполняем только преобразование на упаковке / публикации, потому что если мы трансформировали сам Web.config, то в следующий раз вы отладки своего приложения Web.config снова преобразуется. Так что, например, если в вашем web.debug.config у вас есть преобразование, чтобы добавить значение на конфигурацию, все в порядке, в первый раз, когда вы добавляете это, но затем в следующий раз ваш запущенный / отладки вашего приложения, он будет добавлен снова. Так что лучше избегать этого.

Другие советы

Если вы используете Visual Studio 2015, вы можете просто щелкнуть правой кнопкой мыши по преобразованию нужной среды и нажмите «Просмотр предварительного просмотра» ... Затем он будет генерировать преобразование, и вы можете скопировать и вставить это в обычный Web.config Файл для целей отладки. Просто не совершайте!

Если вы используете Visual Studio 2013, вы можете установить SlowChethah - расширение XML преобразований

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top