Я не могу заставить MS Build выводить преобразованный Web.Config
файл. Я настроил проект сборки с помощью восстановления пакета NuGet, как описано в NuGet docs. Все части сборки работают (восстановление пакетов, CI, пакеты веб-развертывания), за исключением преобразования. Я пробовал базовую настройку и пользовательский файл проекта, а также много других вариантов, и я никуда не попал.
Раньше я без проблем выполнял настройки преобразования конфигурации. У меня установлен Slow Cheetah, и я могу предварительно просмотреть свое текущее преобразование и убедиться, что оно работает. Когда я запускаю сборку локально через MSBuild.exe
, на самом деле происходит преобразование:
TransformWebConfigCore:
Transforming Source File: G:\MyProject\Web.config
Applying Transform File: G:\MyProject\Web.Debug.config
Output File: obj\Debug\TransformWebConfig\transformed\Web.config
Transformation succeeded
(Если я посмотрю на вывод -v, я могу увидеть отдельный запуск преобразования)
Затем Web Deploy параметризует мой web.config
:
Transformed Web.config using G:\MyProject\Web.Debug.config into obj\Debug\TransformWebConfig\transformed\Web.config.
PipelineTransformPhase:
Publish Pipeline Transform Phase
PreAutoParameterizationWebConfigConnectionStrings:
Creating directory "G:\MyProject\obj\Debug\CSAutoParameterize\transformed\Views\".
Copying obj\Debug\TransformWebConfig\transformed\Web.config to obj\Debug\CSAutoParameterize\original\Web.config.
AutoParameterizationWebConfigConnectionStringsCore:
Transforming Source File: G:\MyProject\Views\Web.config
Applying Transform File: <?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add
connectionString="{% token='$(ReplacableToken_#(parameter)_#(tokennumber))' xpathlocator='name' parameter='$(name)-Web.config Connection String' description='$(name) Connection String used in web.config by the application to access the database.' defaultValue='$(connectionString)' tags='SqlConnectionString' %}"
xdt:Transform="SetTokenizedAttributes(connectionString)" xdt:SupressWarnings="True" />
</connectionStrings>
</configuration>
No element in the source document matches '/configuration/connectionStrings'
Not executing SetTokenizedAttributes (transform line 6, 15)
Output File: obj\Debug\CSAutoParameterize\transformed\Views\Web.config
Transformation succeeded
PostAutoParameterizationWebConfigConnectionStrings:
Auto ConnectionString Transformed obj\Debug\TransformWebConfig\transformed\Web.config into obj\Debug\CSAutoParameterize\transformed\Web.config.
Затем параметризованный файл перемещается в пакет, а преобразованный файл удаляется.
Копирование obj \ Debug \ CSAutoParameterize \ transformed \ Web.config в obj \ Debug \ Package \ PackageTmp \ Web.config. Удаление файла "obj \ Debug \ CSAutoParameterize \ transformed \ Web.config".
Итак, у меня есть преобразованный web.config
файл, который не попадает в мои выходные данные сборки. Почему преобразование происходит, но не копируется в выходной каталог или пакет веб-развертывания?