Почему пакет MathNet.Numerics NuGet такой большой?

Недавно я добавил MathNet.Numerics через NuGet в свое решение C#. Каталог пакетов в папке решения раздулся примерно до 50 МБ! Тем не менее, я могу просто загрузить dll MathNet и использовать только ее, которая занимает всего 1,5 МБ. Если мне нужна документация, я могу включить XML, который занимает еще 3,5 МБ.

Я неправильно использую Nuget или это ожидаемое поведение? Кажется, что он тратит много места.


person Superbest    schedule 18.06.2015    source источник
comment
Вы можете просто посмотреть содержимое папки пакетов. Если вы это сделаете, вы заметите, что есть файл nupkg размером 4 МБ и 7 подпапок, каждая из которых предназначена для определенной комбинации целевых проектов. Вероятно, вы можете просто удалить те конфигурации, которые вам не интересны.   -  person Jeroen Vannevel    schedule 19.06.2015
comment
@JeroenVannevel Да, похоже, что большая часть раздувания связана с несколькими версиями пакета для Android. Однако не сломается ли NuGet, поскольку он ожидает, что они будут там?   -  person Superbest    schedule 19.06.2015
comment
Вы можете просто попробовать и посмотреть, так ли это. Я удалил net35 и net40, пересобрал проект и все равно собрал. NuGet PM также указал, что он все еще установлен, поэтому я предполагаю, что это не будет проблемой.   -  person Jeroen Vannevel    schedule 19.06.2015
comment
Почему это имеет значение? Вы все равно не должны помещать двоичные файлы в систему управления версиями (это одна из лучших вещей в NuGet), а 50 МБ — это арахис.   -  person Daniel Mann    schedule 20.06.2015
comment
@DanielMann Если вы когда-либо отвечали за большой и сложный продукт, вы поймете, что иногда хранение библиотек (двоичных файлов) под контролем источника является лучшим вариантом. Nuget имеет свои плюсы и минусы, как и любая система.   -  person slugster    schedule 20.06.2015
comment
@DanielMann Не будет ли решение нарушено, если Nuget ожидает найти пакет, но его там нет?   -  person Superbest    schedule 22.06.2015


Ответы (2)


Причина, по которой в пакете содержится много редакций одной и той же версии, — это конфликт интересов:

  • Мы хотели бы поддерживать широкий спектр платформ.
  • Мы хотели бы использовать расширенные функции, даже если они доступны только на некоторых платформах (обычно только на полной платформе .Net, такой как TPL или System.Numerics), для повышения производительности, а также по причинам совместимости и удобства использования.
  • Избегайте кошмаров с зависимостями нисходящего потока, публикуя только один пакет для каждой версии, включая все платформы.

Если это вызывает у вас проблемы, рассмотрите возможность обсудить этот вопрос с командой на discuss.mathdotnet.com (новый) или, может быть, открыть вопрос в GitHub.

PS: Если NuGet вам не подходит, мы также предоставляем Zip-архивы, с которыми вы можете работать вручную. и выбрать именно то, что вам нужно.

person Christoph Rüegg    schedule 20.06.2015

Похоже на ожидаемое поведение. Владелец пакета NuGet должен решить, сколько версий поместить в один пакет.

Вероятно, вы можете безопасно удалить его, но он будет возвращаться каждый раз, когда вы восстанавливаете файлы NuGet. Если вы беспокоитесь о том, что в вашу сборку или выпуск будет включено много лишнего, проверьте файл .csproj и убедитесь, что вы копируете только нужную версию MathNet.Numerics.dll.

person neverendingqs    schedule 20.06.2015
comment
Кроме того, в качестве альтернативы двоичным файлам в системе контроля версий/повторной загрузке вы можете скопировать пакет на локальный сервер nuget и использовать этот источник пакета в своих проектах. - person Ewan; 20.06.2015