2016-12-01 43 views
0

我試圖爲我的配置文件設置一個令牌替換。我源文件名設置爲:VS 2015發佈管理Tokenize XPath /正則表達式不起作用

$(System.DefaultWorkingDirectory)/TFS Web Build 1.0/Corporate Art\app.RM.config 

(在這裏,RM文件是使用令牌化配置文件令牌)

目標文件名設置爲配置文件的真實姓名:

Company.Client.Corporate.exe.config 

我在構建服務器上的JSON文件:

\0111-03-0555-01\c$\BuildFiles\Transforms.json 

的transforms.json文件中有如下的數據:

[ 
{ 
"CompanyTestDomain": {"QA4"}, 
"Environment": {"QA4.com"}, 
"CheckForContext": {"true"}, 
"ServiceTierAppHost": {"0111-06-0555-00-01.Company.com"}, 
"ServiceTierCsHost": {"0111-03-0444-00.Company.com"}, 
"ReportServer": {"0777-02-0111-00-01.Company.com"}, 
"ReportID": {"systemID"}, 
"ReportDomain": {"Corp"}, 
"ReportPWord": {"Password"} 
} 
] 

的的powershell執行C:\Users\Public\Downloads\agent\tasks\Tokenizer\2.0.2\tokenize.ps1

下一行是灰色,而不是黑色的,所有的其他信息是:

##[debug]Performing the operation "Copy File" on target "Item: 
C:\Agent_work\85c7a0d97\TFS Web Build 1.0\CorporateArt\app.RM.config 
Destination: C:\Users\Public\Downloads\agent\tasks\Tokenizer\2.0.2\Isagenix.Clients.CorporateBackOffice.exe.config.tmp". 

之後,我開始得到消息,它是更新令牌'CompanyTestDomain' 令牌'CompanyTestDomain'找不到值

那麼,有人能幫我弄清楚我做錯了什麼嗎?

+0

您是否使用基於Web的版本管理或基於服務器的版本管理?你使用了哪個任務?提供您的發佈管理定義的詳細信息。這項任務如何:https://marketplace.visualstudio.com/items?itemName=ms-devlabs.utilitytasks –

+0

我正在使用基於Web的版本管理。該任務在帖子標題中註明:「VS 2015版本管理Tokenize XPath /正則表達式」至少這是出現的名稱。我認爲那是你提到的那個。我有一個版本鏈接到一個版本。我目前唯一的任務就是完成這一項任務。在定義信息方面你還想要什麼? – JCollier

+0

你用我的解決方案解決了這個問題嗎? –

回答

0

配置文件的內容應該是這樣的(包含一個部分ConfigChanges)

例如:

源頭文件內容:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="TestKey1" value="__Token1__" /> 
     <add key="TestKey2" value="__Token2__" /> 
     <add key="TestKey3" value="__Token3__" /> 
     <add key="TestKey4" value="__Token4__" /> 
    </appSettings> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /> 
    </startup> 
</configuration> 

配置文件內容:

{ 
    "Default Environment": { 
    "CustomVariables": { 
     "Token2": "value_from_custom2", 
     "Token3": "value_from_custom3" 
    }, 
    "ConfigChanges": [ 
     { 
     "KeyName": "/configuration/appSettings/add[@key='TestKey1']", 
     "Attribute": "value", 
     "Value": "value_from_xpath" 
     } 
    ] 
    } 
} 

版本定義變量:Token4 T4

結果:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <appSettings> 
    <add key="TestKey1" value="value_from_xpath" /> 
    <add key="TestKey2" value="value_from_custom2" /> 
    <add key="TestKey3" value="value_from_custom3" /> 
    <add key="TestKey4" value="t4" /> 
    </appSettings> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2" /> 
    </startup> 
</configuration> 

的更多信息,你可以檢查這些物品(12)。

+0

有沒有一個白癡指南呢?第一個是標記配置文件?第二個是json文件嗎? 我在網上有一條線。配置是如下: <添加鍵=「Google分析」值=「__ GoogleCode__」 /> 我想更換__GoogleCode__如下: US-12349809-5 應該採取什麼JSON文件是什麼樣子? { 「默認環境」:{ 「CustomVariables」:{ 「googlecode上」: 「美12349809-5」 } – JCollier

+0

@JCollier第一個是你的源文件(Web.config),第二個是配置文件(json文件)。 json文件應該看起來像{「Default Environment」:{「CustomVariables」:{「GoogleCode」:「US-12349809-5」}和web.config文件喜歡 。 (此任務找到模式__ __)。文章:https://github.com/openalm/Extension-UtilitiesPack/blob/master/Utilites/overview.md和https://the.randomengineer.com/2016/05/06/using-tokenization-token-replacement-換buildsreleases式-TFS-2015 / –