Я использую задачу FileTransform@2 для преобразования web.config с web. [Environment] .config в Azure DevOps Pipeline (yaml). Кажется, что происходит сбой одного из отдельных преобразований, что приводит к сбою всего задания, хотя я не уверен, почему.
Вот сообщение об ошибке из задачи:
Executing SetAttributes (transform line 72, 48)
on /configuration/appSettings/add[@key='PCWSUser']
System.NullReferenceException: Object reference not set to an instance of an object.
Applying to 'add' element (no source line info)
at Microsoft.Web.XmlTransform.XmlTransformationLogger.ConvertUriToFileName(XmlDocument xmlDocument)
Set 'key' attribute
at Microsoft.Web.XmlTransform.XmlTransformationLogger.LogWarning(XmlNode referenceNode, String message, Object[] messageArgs)
Set 'value' attribute
at Microsoft.Web.XmlTransform.Transform.ApplyOnAllTargetNodes()
Set 2 attributes
Done executing SetAttributes
Итак, это похоже, что PCWSUser appSetting ему не нравится.
Вот фрагмент web.config для PCWSUser:
...
<add key="PCWSUser" value="TheUserName" />
...
Вот web. [environment] .config (в данном случае web. qa.config) фрагмент для PCWSUser:
...
<add key="PCWSUser" value="TheUserNameQA" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
...
Я не совсем уверен, что делаю не так ... Когда преобразование выполняется локально в Visual Studio, проблем с ним нет . Еще одна странность заключается в том, что я запускал это несколько раз, и, похоже, каждый раз выбирал другое приложение, которое выдает ошибку. То же сообщение об ошибке и все такое, только другие настройки. Все настройки настроены таким образом. К вашему сведению.
Сообщите мне, если вам понадобится дополнительная информация.
ИЗМЕНИТЬ 1
Согласно @Kevin Предложение Lu-MSFT, я добавил /p:TransformWebConfigEnabled=false
к этапу сборки и попытался снова.
Журналы этапа сборки:
##[debug]INPUT_MSBUILDARGS: '/t:rebuild /p:DeployOnBuild=true /p:PublishProfile="Dev" /p:PackageLocation="D:\agent\_work\283\a" /p:TransformWebConfigEnabled=false'
Однако преобразование все равно не удалось, хотя ошибка снова перемещалась . На этот раз ошибка находится между двумя шагами, поэтому я даже не понимаю, что пошло не так.
Развернуть журналы стадии:
Executing Replace (transform line 10, 105)
on /configuration/connectionStrings/add[@name='SqlConnectionString']
Applying to 'add' element (no source line info)
Replaced 'add' element
Done executing Replace
System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.Web.XmlTransform.XmlTransformationLogger.ConvertUriToFileName(XmlDocument xmlDocument)
at Microsoft.Web.XmlTransform.XmlTransformationLogger.LogWarning(XmlNode referenceNode, String message, Object[] messageArgs)
at Microsoft.Web.XmlTransform.Transform.ApplyOnAllTargetNodes()
Executing Replace (transform line 11, 105)
on /configuration/connectionStrings/add[@name='DB2ConnectionString']
Applying to 'add' element (no source line info)
Replaced 'add' element
Done executing Replace