8

我的运行设置文件包含一些我希望能够根据环境在 VSTS 中覆盖的连接字符串。

我不希望每个环境都有一个特定的运行设置文件,但我想使用环境变量以便在我们的其他部署版本的配置方式上保持一致。

但是,当我想将包含分号 (;) 的连接字符串(或任何参数)转发给我的单元测试时,我遇到了问题。它正在被截断。我已经测试了没有“;”的传输其他值 成功地。

环境变量

任务配置

设置.运行设置

        <?xml version="1.0" encoding="utf-8"?>
        <RunSettings>
          <TestRunParameters>
           <Parameter name="CRM_CONNECTIONSTRING" value="Url = https://MYCRM.crm4.dynamics.com; Username=login@email.com; Password=mypassword;" />
          <TestRunParameters>        
         </RunSettings>

但是,在执行(并显示单元测试中收到的实际值)时,该值在第一个“;”之后被截断

在此处输入图像描述

有没有办法保护价值?

4

2 回答 2

6

在直接联系微软后,最终用一种解决方法回答了自己。

官方 vsts-task github 上也出现了问题:https ://github.com/Microsoft/vsts-tasks/issues/2567

解决方法:在测试组装任务之前,运行一个以 runsettings 文件的路径为参数的 powershell 脚本,读取 VSTS 环境变量并直接替换 runsettings 中的 XML 值。

我在这里提供了我的 powershell 脚本:https ://github.com/camous/vsts-powershell/blob/master/Set-RunSettings.ps1 (参数必须以“__”为前缀)

我在这里写了一个更完整的“如何做”:https ://stuffandtacos.azurewebsites.net/2016/09/28/override-runsettings-parameters-in-visual-studio-team-service-when-value-contains-分号/

于 2016-09-28T14:01:17.157 回答
4

在覆盖测试运行参数中添加以下(在双引号内)也将保留所需的格式。

-key "$(PipelineVariableName)" 代替 -key $(PipelineVariableName)

注意:我使用包含-(连字符)和''(空格)的管道变量值测试了上述内容。

于 2020-07-13T17:08:04.880 回答