azure - 如何在发布构建期间用 configSource 替换连接字符串文件?

标签 azure tfs azure-devops azure-pipelines azure-pipelines-release-pipeline

我想使用 Azure tfs 为 .net Web 应用程序开发管道。我使用了已为此类部署提供的 IIS Web 部署模板/实用程序。在发布管道中,我使用 XML 变量转换。但我面临的一个问题是,在项目中,我有多个 .config 文件,并且我已将它们包含在我的 web.config 文件中,如下所示

<configuration>
  <connectionStrings configSource="None"/>  
  
  <appSettings file="None">
  </appSettings>

根据不同环境的发布,我在发布过程中进行了变量替换。例如,文件夹 app_data 包含 app_sttings_*.config 文件,并且文件变量确实会被替换。但我的连接字符串文件有问题,我无法在发布期间更改 configSource。

我这样做是错误的还是遗漏了一步?

最佳答案

因为 configSource 属性无法被 IIS Web App Deploy 任务替换。您可以使用扩展工具Magic Chunks替换 configSource 值。

您可以在 Azure DevOps 组织中安装 Magic Chunks 扩展。并在IIS Web App 部署任务之前添加配置转换任务来替换configSource值。

首先,您需要定义一个变量(例如 configSource)来保存发布管道变量部分中的 configSource 值。然后配置配置转换任务的转换部分,如下

{
  "configuration/connectionStrings/@configSource": "$(configSource)"
 }  

还有另一个替换 token 任务可以替换 configSource 值。您可以查看here .

它在 IIS Web App Deploy task 中说发布管道中定义的变量将与配置文件的 appSettings、applicationSettings 和 connectionStrings 部分中的“key”或“name”条目进行匹配。也许这就是 configSource 无法被 IIS Web App Deploy 任务替换的原因。

参见File transforms and variable substitution reference了解更多信息。

关于azure - 如何在发布构建期间用 configSource 替换连接字符串文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63142632/

相关文章:

azure - 获取 Azure 辅助角色 Run() 上的应用程序路径

android - 将项目导入Team Services时,Android Studio 2.2.2卡住

tfs - 如何更新 tfs 中的现有搁架集

azure - 卡夫卡与 SignalR

azure - 如何获取 Azure EventHub 深度

.net - Puppet 是在站点关闭的情况下从 TFS 拉取部署 .NET 站点的正确工具吗

c# - 如何向 SonarQube 添加单元测试覆盖率?使用 Azure-DevOps 管道

javascript - 如何为团队基础服务构建 javascript 测试项目

git - VSTS - 连接到 Azure Active Directory 后无法进行 git push

azure - 在 Azure DevOps Server 上创建构建 zip,例如 github