我使用的发布经理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._-]*?__'
希望这可以帮助别人。