我们有一个Web.config文件,它具有以下system.net mailSettings属性:
<system.net>
<mailSettings>
<smtp configSource="mailSettings.config" />
</mailSettings>
</system.net>mailSettings.config文件位于项目子根级别下,只包含以下行:
<smtp from="reports@companyxyz.com" deliveryMethod="Network">
<network enableSsl="true" host="smtp.sendgrid.net" port="587" userName="" password="" />
</smtp>我们希望将userName和密码属性存储为发布管道中的变量(最终在Azure密钥库中,但不在这里的范围内),在Azure应用程序部署任务(下面的yaml)中,有一个用于XML变量转换/替换的选项。
steps:
- task: AzureRmWebAppDeployment@4
displayName: 'Deploy Azure App Service'
inputs:
azureSubscription: '$(Parameters.ConnectedServiceName)'
appType: '$(Parameters.WebAppKind)'
WebAppName: '$(Parameters.WebAppName)'
enableCustomDeployment: true
TakeAppOfflineFlag: false
RenameFilesFlag: false
enableXmlTransform: true
enableXmlVariableSubstitution: true

我已经启用了它,但是它如何知道如何转换mailSettings.config模板文件?
这是对XmlVariableSubstitution开关的描述:
在构建或发布管道中定义的变量将与任何配置文件和appSettings的applicationSettings和connectionStrings部分中的“键”或“名称”条目相匹配。变量替换在配置转换之后运行。
注意:如果在发布管道和环境中定义了相同的变量,那么环境变量将取代发布管道变量。
发布于 2021-05-20 08:51:03
在您的情况下,标准替换将无法工作,因为您已经发现:
在构建或发布管道中定义的变量将与任何配置文件和appSettings的applicationSettings和connectionStrings部分中的“key”或“name”条目相匹配。变量替换在配置转换之后运行。
您仍然可以使用Extension-更换代币实现您的目标。
对于默认任务配置,需要将文件更改为将令牌定义为#{VARIABLE_NAME}#。所以在你的情况下应该是:
<smtp from="reports@companyxyz.com" deliveryMethod="Network">
<network enableSsl="true" host="smtp.sendgrid.net" port="587" userName="#{USER_NAME}#" password="#{PASSWORD}#" />
</smtp>还要确保放置正确的目标文件。
https://stackoverflow.com/questions/67614382
复制相似问题