[英]Docker fails to build in Azure Pipelines with “error MSB1001”
[英]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.