VS 2017版本管理对XPath /正则表达式进行标记化

时间:2019-03-27 20:33:49

标签: tfs azure-pipelines azure-pipelines-release-pipeline tfs2017

我正在尝试使用版本管理Tokenize XPath / Regular,并且在尝试回答这三个条目时我不断收到不同的错误

  1. 源文件名: $(System.DefaultWorkingDirectory)/ XXXXX / Drop-我知道在我的构建服务器上,该文件应为 xxxxxx.exe.config,位于zip文件中

  2. 目标文件名:我不知道这应该在构建服务器还是发行服务器上?

  3. 配置Json文件名:我真的不知道该放在哪里,下面的代码是Json文件。

    {     “ DEV”:{

        "ConfigChanges": [{
            "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']",
            "Attribute": "emailListId",
            "value": 0
        },
        {
            "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']",
            "Attribute": "subjectLineStarter",
            "value": "[DEV]: Program Name"
        },
        {
            "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']",
            "Attribute": "smtpServer",
            "value": "testsmtp.dns.com"
        },
        {
            "KeyName": "/configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']",
            "Attribute": "toAddress",
            "value": "application.support.test@Yahoo.com"
        }]
    }
    

    }

我的错误

2019-04-01T16:40:08.4509133Z ##[section]Starting: Tokenizer: Transform Source filename
2019-04-01T16:40:08.4663688Z ==============================================================================
2019-04-01T16:40:08.4663688Z Task         : Tokenize with XPath/Regular expressions
2019-04-01T16:40:08.4663688Z Description  : Replaces __<variable>__ and/or XPath for XML documents with User Defined variables or configuration json document
2019-04-01T16:40:08.4663688Z Version      : 2.1.0
2019-04-01T16:40:08.4663688Z Author       : ms-devlabs
2019-04-01T16:40:08.4663688Z Help         : [More Information](https://github.com/openalm/Extension-UtilitiesPack)
2019-04-01T16:40:08.4663688Z ==============================================================================
2019-04-01T16:40:10.6850718Z Environment: DEV
2019-04-01T16:40:10.8413250Z Updating emailListId of /configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']: 0
2019-04-01T16:40:10.9350669Z ##[error]Failure while updating emailListId of /configuration/loggingConfiguration/listeners/add[@name='Email Trace Listener']: 0
2019-04-01T16:40:10.9663179Z ##[section]Finishing: Tokenizer: Transform Source filename

在我的.proj文件中放置了此文件,以便可以释放App.Config.Token文件而不是App.Config。

<ItemGroup>
    <None Include="App.config" />
    <None Include="App.Debug.config">
      <DependentUpon>App.config</DependentUpon>
    </None>
    <None Include="App.config.Token">
      <DependentUpon>App.config</DependentUpon>
    </None>
  </ItemGroup>

App.config和App.Debug.config相同。 App.Config.Token

1 个答案:

答案 0 :(得分:0)

这是我们当前正在使用的标记化过程(我们不压缩构建结果,请参见下面的扩展建议)

已建立:

使用App.Config.Token替换App.Config,例如,在命令行-task中复制命令。

发布

对于每个环境/阶段:

  • 对.config使用“替换令牌”-扩展名。这将从版本定义中读取特定于环境的变量,并替换.config中的标记(在构建中已由.config.token替换)
  • 进行部署

替换档案中的令牌需要不同的扩展名,Tokenize in archive可能是一个选项。我们使用Colin's Build and Release tools,它具有用于json文件的漂亮tokenizator。我更喜欢Colin的令牌生成器,因为它非常简单明了,而且不必涉猎XPATH和转换。我们还使用Json to Variables在VC中存储环境变量,而不是将它们存储在发行版定义中。我怀疑最后一个在TFS 2017中不起作用,但没有尝试过。

对于原始问题,我怀疑您使用的扩展名无法从存档内部读取您要标记化的文件。我自己没有使用过该扩展名,但我将JSON文件放入版本控制中,因此最终出现在构建工件中。目标文件名意味着扩展名可以写出最终的配置文件,可能会替换原始的app.config。