2012-06-06 51 views
1

我已經注意到了幾次,Nuget包會重置包版本,從頭開始有效地開始,並且給包裝提供比以前版本更低的版本。在VS2010中構建時,Nuget如何跟蹤包的版本?

我用星號*功能在VS2010和AssemblyInfo.cs中生成的版本:

// You can specify all the values or you can default the Revision and Build Numbers 
// by using the '*' as shown below: 
[assembly: AssemblyVersion("1.0.0.*")] 
//[assembly: AssemblyFileVersion("1.0.*")] 

現在,我可能已經構建編號1.0.0.32334,然後突然並隨機生成將成爲實例1.0.0.16272,並且從它構建的包也是如此。

這種情況完全是隨機發生的(在完全或在什麼條件下還沒有弄清楚),但它非常惱人,因爲它會殺死Nuget的更新機制 - 因爲它找不到新版本。

有沒有其他人發現了這個?

回答

1

簡短的回答:剛纔的NuGet默認使用的程序集的版本,但你可以在nuspec或在命令行上覆蓋..

根據版本號的格式是這樣的:

major.minor.build.revision

And auto-incremented build numbers behave like this

默認內部版本號每天增加。默認版本號是隨機的。

當您使用自動生成的編號,你應該讓VS自動增量構建和版本號,如註釋掉示例所示。儘管文檔聲明版本號是隨機的,但在我看來,它並不是隨機的。事實上,它似乎整天增加,並可能在第二天重置。但是,我不會爲此付錢,因爲它可能會改變實施細節。

通過不讓VS選擇內部版本號,你基本上將它減少到一個隨機數,所以它並不令人驚訝,有時修訂版的號碼比以前的版本號少。除非在nuspec或命令行中重寫,否則NuGet只取得程序集版本並使用相同版本的程序包。所以你的根本原因可能就是你選擇組件版本號的方式。

如果可以,只要改變你的版本控制方案,以這樣的:

[assembly: AssemblyVersion("1.0.*")] 

但是,如果這是不能接受的,那麼你將不得不在Nuspec維護版本號或爲他們提供在命令行上調用時Nuget pack

+1

現貨答案!其實你對版本號是正確的,我猜它是按天重置的,因此我們可以從昨天的版本號中得到較低的版本號。我確實轉向構建自動化版本控制方案,並解決了這個問題。 – mare