2013-02-08 84 views
0

價: Nuget Versioning SemVerNuget版本控制忽略內部編號SemVer的符號嗎?

的的NuGet版本文檔讀取:

SemVer還引入了一個版本號的概念對於那些每天或連續構建創建。公共NuGet.org圖庫不支持此功能。

它說,它不是在nuget.org畫廊支持,但我專門琢磨怎麼nuget.exe -update-install或包控制檯VS處理它...

+0

如果您無法將軟件包打包或推送到版本中具有內部版本號的庫中,您會在'nuget.exe -update | install'中指定什麼? – 2013-05-02 22:02:18

+0

就好像支持破折號「-beta」= pre-release ..例如,當我推入版本= 1.0.1-rc的nuget時,它將顯示爲預發佈版本,因此所有邏輯圍繞安全更新仍然發生。我希望能夠推出一個看起來像這樣的版本:1.0.1 + 421.500,我想知道這是否會工作?,崩潰nuget?,在+後忽略所有內容?將它視爲預發佈? – diegohb 2013-05-03 10:47:51

+1

NuGet團隊正在致力於支持SemVer v2,但現在他們只支持SemVer v1。 VS 2015與NuGet v3一起發佈,但不幸的是,他們沒有設法將SemVer v2作爲v3發行版的一部分。 – Spiralis 2015-10-26 18:04:15

回答

3

Nuget codebase看看SemanticVersion.cs。這提供了以下正則表達式來驗證提供的版本。如果正則表達式不匹配,該版本是無效的:

new Regex(@"^(?<Version>\d+(\s*\.\s*\d+){0,3})(?<Release>-[a-z][0-9a-z-]*)?$", 
      RegexOptions.Compiled 
      | RegexOptions.IgnoreCase 
      | RegexOptions.ExplicitCapture); 

的搶鮮字符串格式嚴格不得不開始破折號,然後打印信函,然後破折號和字母數字的任意組合。不允許使用+.

嘗試和pack比一個有效的版本以外的任何其他,您將得到:

Attempting to build package from 'ConsoleApplication1.csproj.nuspec'. 
'1.0.1+421.500' is not a valid version string. 
Parameter name: version 

如果你不知怎麼用無效的版本包,那麼的NuGet包裝過程中必須被旁路,我只能假設試圖推動它會有不可預知的結果。

+0

感謝您的幫助! – diegohb 2013-05-06 13:23:45