2016-11-29 144 views
2

比方說,我正在開發關閉的功能(即C#項目),即不準備發佈。有條件地指定nuget包版本

我的項目依賴於一個組件通過nuget,這也是我維護的東西。

我的功能需要更改組件以及我的消費項目。

我需要製作中間版本,我不喜歡分支。

在我的項目中,我可以關閉該功能併發貨。問題是:如何在功能切換項目中使用nuget,例如,如果功能處於關閉狀態,則使用組件版本X,並在功能打開時使用版本X + 1。

  • 我找不到的加入條件packages.config

我能想到的是,使用非釋放的環境不同的飼料唯一的任何方式,但這種情況可能導致其他後勤問題。

編輯:

我建立了一個CI服務器上運行,所以我需要能夠腳本它在某種程度上。

回答

0

如果您控制NuGet源,那麼您可以使用Pre-Release functionality

實質上,您通過將它們與-alpha-beta作爲後綴對Nuget包進行版本控制,然後在Visual Studio中,在NuGet包提要中勾選「包括預發行」複選框。

對於在構建服務器上使用開關我建議你看看使用MSBuild/MSBuild社區任務/ MSBuild擴展包。

您可以使用MSBuild運行構建步驟,該步驟可以檢查配置文件並修改.nuspec文件。我之前沒有提供源代碼,但可以使用xml/msbuild解析xml文件並對其應用更改。 IIRC一個大大的「疑難雜症」的是,你需要specifiy的.nusepc命名空間

<package xmlns="http://schemas.microsoft.com/packaging/2016/06/nuspec.xsd">

當你解析nuspec file.It那麼應該能夠針對<dependencies>元素和後綴均與前期依賴條件 - 發佈標籤。

+0

對,但是我該如何控制「包括預發佈」編程?我不會手動構建,我的構建在CI上運行,所以我更喜歡可編寫腳本的東西。謝謝。 –

+0

使用命令行(因爲你必須使用它的CI),並通過它的版本通過它每個版本 –

+0

@muhammadwaqas - 關於如何通過msbuild指定nuget包版本的任何提示將是非常棒的! –