错误:Azure Pipelines 中的 XML 转换错误

Car*_*eet 3 asp.net web-config azure continuous-deployment azure-devops

我花了一天时间试图找出 Azure DevOps 中 XML 转换错误的根源,但我似乎无法解决该问题。在本地,配置转换工作正常,并且配置转换适用于我要部署到的在 Azure DevOps 中工作的其他环境。

IIS Web App 部署任务终止时日志中出现的错误是:

2021-02-26T15:29:49.9263250Z ##[error]Error: XML transformation error while transforming C:\...\Web.config using C:\...\Web.Live.config.
Run Code Online (Sandbox Code Playgroud)

显然,我已经删除了 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()
Run Code Online (Sandbox Code Playgroud)

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

任何人都可以指出什么可能导致管道中的这种转换错误吗?

Car*_*eet 9

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

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

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

我发现罪魁祸首是以下转换:

<system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
Run Code Online (Sandbox Code Playgroud)

我通过将转换更改为:

<system.web>
   <compilation targetFramework="4.5" xdt:Transform="Replace">
   </compilation>
</system.web>
Run Code Online (Sandbox Code Playgroud)