繁体   English   中英

错误:Azure 管道中的 XML 转换错误

[英]Error: XML transformation error in Azure Pipelines

我花了一天时间试图弄清 Azure DevOps 中的 XML 转换错误的根源,但我似乎无法解决这个问题。 在本地,配置转换工作正常,我正在部署的其他环境的配置转换在 Azure DevOps 中工作。

当 IIS Web App Deployment 任务终止时,日志中出现的错误是:

2021-02-26T15:29:49.9263250Z ##[error]Error: XML transformation error while transforming C:\...\Web.config using C:\...\Web.Live.config.

显然,我已经删除了 Azure DevOps 适用的长文件路径。

在 IIS Web 应用程序部署任务日志中进一步显示以下错误,但未突出显示为重要错误。 Aster 记录了这个错误,它似乎确实应用了转换,然后给出了终止进程的上述错误:

2021-02-26T15:29:49.9178971Z System.NullReferenceException: Object reference not set to an instance of an object.
2021-02-26T15:29:49.9180071Z    at Microsoft.Web.XmlTransform.XmlTransformationLogger.ConvertUriToFileName(XmlDocument xmlDocument)
2021-02-26T15:29:49.9180525Z    at Microsoft.Web.XmlTransform.XmlTransformationLogger.LogWarning(XmlNode referenceNode, String message, Object[] messageArgs)
2021-02-26T15:29:49.9180911Z    at Microsoft.Web.XmlTransform.Transform.ApplyOnAllTargetNodes()

我已经检查过 XML 文件,但找不到任何格式错误的 XML,我还通过 XML 验证器运行它。 我已经在 Visual Studio 2019 Professional 中本地预览了转换(可能使用 Slow Cheetah),在那里也很好。

任何人都可以指出可能导致管道中出现此转换错误的原因吗?

我找到了答案,它是由这位顶级小伙子或女士在线发布在博客上的。

https://tatvog.wordpress.com/2017/06/06/visual-studio-team-services-web-config-transform-error/

编辑:如果链接失效,解决方案如下。

我跟踪到罪魁祸首是以下转换:

<system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>

我通过将转换更改为:

<system.web>
   <compilation targetFramework="4.5" xdt:Transform="Replace">
   </compilation>
</system.web>

我知道这个有点旧,但问题可能是 VSBuild 任务正在转换 web.config 文件,然后发布管道也是如此。

因此,例如,如果您有一个删除调试属性的转换,除非 VSBuild 任务具有 TransformWebConfigEnabled=False 参数,否则它将转换 web.config 并删除调试属性。 当发布管道运行时,它会再次尝试删除该属性,但它已经被删除,因此会抛出错误。

以下是我如何指示 VSBuild 任务不进行转换:

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)" /p:AutoParameterizationWebConfigConnectionStrings=False /p:TransformWebConfigEnabled=False'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM