基于符号化的图案更换web.config.token(Tokenization based patt

2019-09-30 10:27发布

我使用的发布经理2015年部署我的应用程序。

我使用微软的扩展工具包做到这一点:

扩展的实用包-文档

这只是说:

符号化的基于模式替换

This task finds the pattern __<pattern>__ and replaces the same with the value from the variable with name <pattern>.
Eg. If you have a variable defined as foo with value bar,
on running this task on a file that contains __foo__ will be changed to bar.

所以在我的web.config.token文件我只需添加:

<add name="ADConnectionString" connectionString="__ADConnectionString__" />

和在释放下变量管理器创建具有名称ADConnectionString然后被在步骤并更换拿起一个变量。

我的问题是,我无法想出一个办法来替换字符串中的标记化字符串。

<add name="CreateTextWriter" initializeData="directory=D:\__WEBLOGDIR__\__ENVIRONMENT__; basename=Web" />

然而,这将工作

<host name="cache1.__ENVIRONMENT__.__DOMAIN__" cachePort="1"/>

将不会。 以被用于匹配正则表达式这是由于。

$regex = '__[A-Za-z0-9._-]*__'
$matches = select-string -Path $tempFile -Pattern $regex -AllMatches | % { $_.Matches } | % { $_.Value }

这将整个字符串,而不是每个记号化字符串相匹配。 为了解决这个问题我稍微改变了正则表达式不能在其选择贪婪。

$regex = '__[A-Za-z0-9._-]*?__'

希望这可以帮助别人。

文章来源: Tokenization based pattern replacement in web.config.token