2013-06-18 68 views
4

我有一個解決方案,其中包含幾個項目。每個項目都有它自己的nuspec文件和一些項目的相互引用使用IncludeReferencedProjects時設置Nuget包依賴項的確切版本

當我通過調用

nuget pack MyLibrary.csproj -IncludeReferencedProject 

的NuGet創建一個新的包是足夠聰明添加任何引用的項目作爲依賴,而不是引進所生成的二進制文件,但它始終將依賴版本

version="1.2.3.4" 

這被解釋爲1.2.3.4或更高

我希望能夠告訴的NuGet的版本設置爲

version="[1.2.3.4]" 

,那樣依賴總是精確

有什麼辦法,我可以做到這一點,而不必手動更新和維護的依賴每個項目的nuspec文件?

+0

你有沒有找到辦法做到這一點的運氣? –

回答

0

您需要做的是編寫一個工具,用於打開生成的包,更改依賴限制並保存包。請注意,除非您有充分理由這樣做,否則不應設置上限。見http://blog.davidebbo.com/2011/01/nuget-versioning-part-2-core-algorithm.html

+0

我試圖找到一種方法來做到這一點與nuget命令,即。而無需編寫額外的工具/腳本。我也沒有試圖設置一個上限,我試圖設置一個確切的版本 –

0

在爲您的項目packages.config文件,指定版本是這樣的:如果你使用-Version指定

<packages> 
    <package id="example.dll" version="1.3" targetFramework="net451" allowedVersions="[1.3]" /> 
</packages> 
+0

這提供了軟件包安裝,軟件包更新等功能,但似乎並不影響「nuget pack」 。 –

+0

@MarkMelville你測試過哪個版本的nuget?我剛剛重新測試了最新版本的nuget,這會影響pack命令。 –

+0

確認這可以與'nuget pack'配合使用 –

0

Nuget說我們應該用這個語法來設置確切的版本。 例子:

<package id="Newtonsoft.Json" version="[9.0.1]" targetFramework="net45" /> 

完整描述可以在這裏找到: https://docs.nuget.org/ndocs/create-packages/dependency-versions

更新:我測試了它,但我得到了如下的錯誤:讀取文件'發生

錯誤C:\ Repo \ MyProject \ MyProj.V1 \ MyProj.V1.Loads \ packages.config':包ID爲'Newtonsoft.Json'的無效包版本:'[9.0.1]'

相關問題