2017-04-05 45 views
1

我們正在將預定的Web作業部署到Azure。 Web作業是使用Visual Studio 2015開發的。「settings.job」文件包含計劃定義。但是,我們希望根據我們是部署到「開發」環境還是「分段/生產」環境來使用不同的計劃。什麼是完成這個最好的方法?如何在每個環境中使用不同的'settings.job'

+0

如何部署項目?使用vso,一個ci工具? – Thomas

+0

你的意思是你想用不同的'settings.job'文件部署到不同的部署插槽(或不同的活動解決方案配置)嗎? –

回答

0

根據你的描述,我建議你可以使用MSbuild來達到你的要求。

我建議你首先使用publish as webjob標籤生成發佈文件,並在項目根路徑中添加一個空白settings.job文件。

結果如下圖所示:

enter image description here

然後,你可以定義一個文件夾來存儲不同settings.job文件。 注意:您需要將文件名稱更改爲與PublishProfiles的名稱相同。 象下面這樣:

AzureWebTest20170214103506發展 - 網絡Deploy.job enter image description here

最後,你可以使用Xcopy將文件複製到項目路徑改變的csproj文件。

1.Unload項目

2.右鍵單擊該項目名稱--->編輯project.csproj

enter image description here

3.Change目標後如下:

<Target Name="AfterBuild"> 
    <PropertyGroup> 
     <test>"$(ProjectDir)sec\$(_PublishProfileName).job"</test> 
    </PropertyGroup> 
    <Message Text="Test = $(_PublishProfileName)"> 
    </Message> 
    <Exec Command="xcopy.exe $(test) $(ProjectDir)settings.job /Y" WorkingDirectory="C:\Windows\" /> 
    </Target> 

當您發佈webjob時,它將根據'PublishProfileName.job'內容複製正確的job.settings。

+0

有沒有更新?如果你覺得我的回答很有用/有幫助。請將其標記爲答案,以便其他人可以從中受益。 –

0

你可以只是有多個JSON文件,如settings.debug,然後使用將使用$(ConfigurationName)宏複製並覆蓋settings.job

預生成事件可以在編輯的預生成事件項目設置。

+0

我用這個方法。它效果很好。 – melvers

1

我會寫一個PowerShell腳本來實現這一點。 在構建定義中,創建一個變量來存儲settings.job文件位置和另一個變量以存儲計劃。然後使用VSTS中的PowerShell腳本實用程序,我將更新設置文件。

下面的代碼會更新文件。

param(
    [Parameter(Mandatory=$true)][string]$configFile, 
    [Parameter(Mandatory=$true)][string]$schedule 
) 

$j = Get-Content $configFile -Raw | ConvertFrom-Json 
$j.schedule = $schedule 
$j | ConvertTo-Json | set-content $configFile 
相關問題