我們使用git作爲源控件,並遵循git flow工作流程。在C#項目中更新帶有和不帶預發佈標誌的nuget包
我們使用Visual Studio 2013
我們正在使用的TeamCity V8.1
我們有2級C#的解決方案。解決方案A和解決方案B.解決方案B使用解決方案A創建的nuget包。
我們使用teamcity作爲構建服務器。我們有2個構建配置來創建Project A nuget包。一個構建配置創建了nuget包的預發佈版本,另一個創建了nuget包的穩定版本。
用於創建預發佈nuget的構建配置在development分支上偵聽。穩定版本的構建配置在主/發行版/修補程序分支上偵聽
當我們在開發分支中工作時,我們使用nuget包的預發佈版本。 但是當我們創建一個發佈分支時,我們想要使用穩定版本的nuget包。
我們到目前爲止嘗試的是: 在項目B csproj文件中,我們在BeforeBuild目標中添加了一個元素,它執行nuget.exe來更新nuget包的預發佈版本。這很好,因爲每次我們構建項目B時,我們都會得到nuget包的最新預發佈版本。
但是,當我們在release/master/hotfix分支中時,我們不想要預發佈版本,我們需要穩定版本。
我已經創建了從BeforeBuild B項目的csproj文件執行的PowerShell腳本目標
在PowerShell腳本我可以找到我們其中git的分支,但我還沒有找到一種方法,使用nuget.exe將nuget軟件包更新到最新的穩定版本。如果我可以在powershell腳本中使用nuget cmdlet,則可以使用版本標誌運行update-package,但在使用nuget.exe時不支持此功能。
您是否做了類似的事情?您是如何解決這個問題的?
聽起來很複雜。你爲什麼不使用nuget服務器呢?將nuget軟件包作爲CI的一部分並不是我想要的方式。 –
我們使用teamcity內部nuget服務器來分發包。所以解決方案B從該提要獲取nuget包。複雜的部分是根據您正在工作的git分支在軟件包的穩定版本和預發佈版本之間進行切換 – OKB
您可以有兩個nuget feed,一個用於stable分支,另一個用於develop分支,這些nuget源基於分支名稱。 –