Пакет рамочных ограничений

Я добавил Argu в свой проект, и вместе с ним было загружено около 700 МБ пакетов. Это связано с тем, что Paket устанавливает дополнительные пакеты, однако я хотел бы понять тонкие различия в определении ограничений платформы с помощью>= или просто framework: net46.

С первой попытки я просто добавил Argu в paket.dependencies файл:

nuget Argu

Поскольку это привело к загрузке почти ГБ пакетов, я спросил:

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

И Пакет ответил:

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

И это конкретное ограничение действительно удалило все ненужные пакеты:

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 ответ

Решение

Это не происходит с более поздними версиями пакета. Однако все еще возможно присвоить пакеты, которые приведут к загрузке дополнительных транзитивных зависимостей, так как некоторые пакеты объявляют зависимость только по стандарту netstand, а не по полной структуре. Подробности см.: https://github.com/fsprojects/Paket/issues/2564.

Другие вопросы по тегам