Sah*_*Lee 3 c# xml azure-devops
我想配置我们的管道,以允许一个构建用于多个环境,而不必创建单独的构建。根据文档,它似乎是有可能的,因为它说:
- 您可以使用此技术来创建默认程序包并将其部署到多个阶段。
我将舞台命名为我的环境(预览),并为该环境创建了一个web.config文件(web.preview.config)。我所有的环境配置文件都与Web.Config文件位于同一路径。
日志显示转换已完成:
2018-11-17T00:26:52.0383966Z [command] D:\ a_tasks \ AzureRmWebAppAppDeployment_497d490f-eea7-4f2b-ab94-48d9c1acdcb1 \ 3.4.13 \ ctt \ ctt.exe s:D:\ a_temp \ temp_web_package_06958915987488234 \ Content 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 \ AzureRmWebAppAppDeployment_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转换成功应用
我可以看到它首先转换为发行版,然后按照文档中的说明应用了预览(发行版然后是环境)。但是,尽管上面说XML转换成功应用,但是当我检查配置变量时,它们并没有改变。我可以进行转换的唯一方法是在排队新的构建时定义buildConfiguration变量,这使我无法在不同的环境中使用同一构建。
在研究时,我从以下链接中找到了这个:
Web.config是在构建过程中转换的,如果从“构建”生成部署包,然后在“发行”中部署它,则无法在部署之前对其进行转换。
但是医生说我可以在多个阶段使用一个默认软件包...是否仍然意味着我必须为每个环境创建单独的版本?XML转换不是我要解决的方案应该看的东西吗?
先感谢您!
++编辑:
发布设置: ReleaseSettings
发布步骤(我想?我强烈感觉这就是您想要的...): ReleaseSteps
2)确保在VS项目中包含转换文件Web.Preview.config,并复制到输出目录。
3)在构建期间禁用配置转换,您只需要在Build任务的MSBuild Arguments部分中添加参数/ p:TransformWebConfigEnabled = False即可。如果要在发行期间更新连接字符串,还需要添加/ p:AutoParameterizationWebConfigConnectionStrings = False。这将使用Web.Preview.config来“转换” web.config。
4)在文件转换和变量替换选项下的IIS Web App Deploy任务版本中,仔细检查是否已检查XML转换。
我在互联网上找到的答案都不适用于我的构建和发布管道。我web.config从发布管道中获得的始终指向未转换的值。
经过几个小时的拉扯我的头发后,我终于让它发挥作用了。
我希望能够通过一个构建和一个发布管道在所有环境上进行部署。
我的设置:
我们的测试阶段在我们的测试服务器上发布了测试分支。阶段/生产来自相同的发行分支,但有自己的转换文件。
我遵循了Microsoft 的一些指南,并设置了web.<environment_name>.config与发布阶段名称相匹配的名称。
我不需要为每个转换删除<Dependent Upon>行.csproj。相反,我所做的只是将每个转换的“构建操作”属性设置为“内容”,如下图所示。
然后,我将这些命令添加到构建管道的“构建解决方案”->“MSBuild 参数”:
/p:MarkWebConfigAssistFilesAsExclude=false/p:TransformWebConfigEnabled=false/p:AutoParameterizationWebConfigConnectionStrings=False.config现在,构建不会尝试自行转换,也不会从工件中排除转换文件,而是允许发布管道进行转换。此外,保留<Dependent On>转换文件可以让我们在代码编辑器中拥有“更清晰”的外观。
| 归档时间: |
|
| 查看次数: |
3823 次 |
| 最近记录: |