变量替换在Web.Config节中不起作用



我在Web.config 中有这个自定义部分

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

我想在我的发布中替换变量,我已经配置了变量并检查了";XML变量子教程";,但我的版本并没有检测到变量vars没有被替换。其他变量已被正确替换(在appSettings中定义(。有没有一种方法可以在不修改Web.Config的情况下替换变量?

附言:我的目标是.Net Framework 4.8

我没有看到Web.config的整个结构,但我可能能说出你这边发生了什么。

"XML变量替换"功能仅适用于applicationSettings、appSettings、connectionStrings和configSections。只有这些才能奏效。

这里明确说明:

https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/transforms-variable-substitution?view=azure-devops&tabs=经典#xml变量替换

此功能使您能够在中修改配置设置web包和XML中的配置文件(*.config文件(parameters文件(parameters.xml(。这样,同一个包可以基于将要部署到的环境进行配置。

变量替换仅在applicationSettings上生效,的appSettings、connectionStrings和configSections元素配置文件。如果您希望替换外部的值对于这些元素,您可以使用(parameters.xml(文件,但是将需要使用第三方管道任务来处理变量替代。

这就是它的设计方式。

如果我误解了什么,请随时告诉我。

有没有一种方法可以在不修改Web.Config的情况下替换变量?

是。我建议你可以添加RegEx Match&替换RegEx Match&替换为您的管道以修改web.config文件。

此任务将使用正则表达式来匹配文件中的字段。

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

然后该值将更新。

您可以使用此网站转换正则表达式:Regex Generator

最新更新