2016-12-20 51 views
6

我已將Argu添加到我的項目中,並且與它一起下載了大約700MB的軟件包。這與Paket installs extra packages有關,但是我想要忽略用> =或者僅僅框架:net46指定框架限制中的細微差別。Paket框架限制差異

在我第一次嘗試我剛纔添加的申辯到paket.dependencies文件:

nuget Argu

由於這導致了下載幾乎GB的包,我問:

.\.paket\paket.exe why nuget System.Threading.Thread

並且paket回覆:

Paket version 3.27.02 
NuGet System.Threading.Thread is a transitive dependency. 
It's a part of following dependency chains: 

-> Argu 
    -> FSharp.Core 
    -> System.Threading.Thread 

-> MathNet.Numerics.FSharp 
    -> FSharp.Core 
    -> System.Threading.Thread 

0 seconds - ready. 

然後,我添加了以下限制paket.dependencies:

nuget Argu framework: >= net46

然而這導致下載相同的程序包。

最後我做:

nuget Argu framework: net46

而這個特定的限制確實刪除所有unneccassary包:

Garbage collecting Microsoft.NETCore.Platforms 
Garbage collecting Microsoft.Win32.Primitives 
Garbage collecting NETStandard.Library 
Garbage collecting System.AppContext 
Garbage collecting System.Collections.Concurrent 
... 

但是我所有的依賴都是這樣規定的(主要是結果,但並非總是如我在解決原始問題時):

source https://www.nuget.org/api/v2 
nuget FAKE framework: >= net46 
nuget FileHelpers framework: >= net46 
nuget FSharp.Collections.ParallelSeq 1.0.2 framework: >= net46 
nuget Fsharp.Data framework: >= net46 
nuget MathNet.Numerics.FSharp 3.14.0-beta01 beta framework: >= net46 
nuget MathNet.Numerics.MKL.Win-x64 2.2.0 framework: >= net46 
nuget NuGet.CommandLine framework: >= net46 
nuget Streams 0.4.1 framework: >= net46 
nuget System.Linq.Dynamic 1.0.7 framework: >= net46 
nuget Fsharp.Configuration framework: >= net46 

所以我的問題是Argu特殊在某種方式,或者我應該總是使用框架限制,特別是目標46(或45),而不是> =。

回答

1

這對於更高版本的分檔不會發生。但是仍然有可能nuget包會導致下載額外的傳遞依賴關係,因爲某些包只聲明netstandard而不是完整框架的依賴關係。詳情請參閱:https://github.com/fsprojects/Paket/issues/2564