c# - 发布期间的 Azure DevOps XML 转换不起作用

标签 c# xml azure-devops azure-pipelines

我想配置我们的管道以允许一个构建用于多个环境,而无需创建单独的构建。根据docs ,它似乎是可能的,正如它所说:

  • You can use this technique to create a default package and deploy it to multiple stages.

我将阶段命名为环境(预览),并为该环境 (web.preview.config) 文件创建了一个 web.config 文件。我所有的环境配置文件都在与 Web.Config 文件相同的路径中。

日志显示转换已完成:

2018-11-17T00:26:52.0383966Z [command]D:\a_tasks\AzureRmWebAppDeployment_497d490f-eea7-4f2b-ab94-48d9c1acdcb1\3.4.13\ctt\ctt.exe s:D:\a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config t:D:\a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.Release.config d:D:\a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config pw i 2018-11-17T00:26:52.4335280Z [command]D:\a_tasks\AzureRmWebAppDeployment_497d490f-eea7-4f2b-ab94-48d9c1acdcb1\3.4.13\ctt\ctt.exe s:D:\a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config t:D:\a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.Preview.config d:D:\a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config pw i 2018-11-17T00:26:52.5443873Z XML Transformations applied successfully

我可以看到它首先转换为发布,然后按照文档所述应用预览(发布然后是环境)。然而,虽然它说 XML 转换应用成功,但当我检查配置变量时,它们并没有改变。使转换工作的唯一方法是在我对新构建进行排队时定义 buildConfiguration 变量,这会阻止我在不同环境中使用相同的构建。

我在研究的时候,从这个link中找到了这个:

Web.config is transformed during the build process, if you generate the deployment package from "Build" and then deploy it in "Release", then you cannot transform it before deployment.

但是文档说我可以在多个阶段使用一个默认包...这是否仍然意味着我必须为每个环境创建单独的构建? XML 转换不是我想要解决的场景应该考虑的吗?

提前致谢!

++ 编辑:

发布设置: ReleaseSettings

发布步骤(我想?我有一种强烈的感觉,这就是你要找的......): ReleaseSteps

最佳答案

1) 确保转换作品。测试一下 here.

2) 确保在您的 VS 项目中包含转换文件、Web.Preview.config 并复制到输出目录。

3) 在构建期间禁用配置转换,您只需在构建任务的 MSBuild Arguments 部分添加参数/p:TransformWebConfigEnabled=False。如果要在发布期间更新连接字符串,还需要添加/p:AutoParameterizationWebConfigConnectionStrings=False。这将使用 Web.Preview.config 来“转换”web.config。

4) 仔细检查您在文件转换和变量替换选项下的 IIS Web 应用程序部署任务的版本中是否检查了 XML 转换。

关于c# - 发布期间的 Azure DevOps XML 转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53643303/

相关文章:

java - 有条件地隐藏android中的显示按钮

azure-devops - 我们如何阅读 Azure DevOps 任务日志?

python-3.x - 如何使用Python从Azure服务总线读取消息?

c# - 编写依赖注入(inject)的库 "enabled"

java - 如何使用 Xpath 正确地从 XML 传递对象

c# - 是否有支持嵌入 HTML 页面的跨操作系统 GUI 框架?

java - 运行测试android应用程序时出现几个错误

Azure DevOps 管道 - 如何捕获错误

c# - 将字符串转换为 DateTime 对象

c# - 获取浏览网站的用户的IP地址