簡體   English   中英

變量替換在 Web.Config 部分中不起作用

[英]Variable substitution does not work in Web.Config section

我在 Web.config 中有這個自定義部分

<serviceWorker PriorityCronExp="__serviceWorker_PriorityCronExp__" ScheduledCronExp="__serviceWorker_ScheduledCronExp__" />

我想替換我的版本中的變量,我已經配置了變量並檢查了“XML 變量替換”,但是我的版本沒有檢測到變量沒有被替換。 其他變量已正確替換(在 appSettings 中定義)。 有沒有辦法在不必修改我的 Web.Config 的情況下替換變量?

PS我的目標是.Net Framework 4.8

我沒有看到你的 Web.config 的整個結構,但我大概能看出你那邊發生了什么。

“XML 變量替換”功能僅適用於 applicationSettings、appSettings、connectionStrings 和 configSections。 只有這些會起作用。

這里清楚地說明:

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/transforms-variable-substitution?view=azure-devops&tabs=Classic#xml-variable-substitution

此功能使您能夠修改 web 包和 XML 參數文件 (parameters.xml) 內的配置文件(*.config 文件)中的配置設置。 這樣,相同的 package 可以根據將要部署的環境進行配置。

變量替換僅對配置文件的 applicationSettings、appSettings、connectionStrings 和 configSections 元素生效。 如果您要替換這些元素之外的值,您可以使用 (parameters.xml) 文件,但是您需要使用第 3 方管道任務來處理變量替換。

它就是這樣設計的。

如果我有什么誤解,請隨時告訴我。

有沒有辦法在不必修改我的 Web.Config 的情況下替換變量?

是的。 我建議您可以將 RegEx Match & Replace 中的RegEx Match & Replace 任務添加到您的 Pipeline 以修改 web.config 文件。

此任務將使用正則表達式來匹配文件中的字段。

steps:
- task: RegExMatchReplace@2
  displayName: 'RegEx Match & Replace'
  inputs:
    PathToFile: web.config
    RegEx: 'PriorityCronExp="(?:[^\\"]|\\\\|\\")*" ScheduledCronExp="(?:[^\\"]|\\\\|\\")*"'
    ValueToReplace: 'PriorityCronExp="$(variabename1)" ScheduledCronExp="$(variablename2)"'

然后值將更新。

您可以使用此站點來轉換正則表達式: Regex Generator

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM