Почему после обращения к nuget размер упакованного инструмента значительно увеличился по сравнению с информацией о размере, предоставленной на nuget.org? - PullRequest
0 голосов
/ 28 января 2019

Почему существует такая огромная разница между тем, что я вижу в nuget.org при увеличении размера и размера загружаемого пакета после упаковки с данным nuget?

Например: In nuget.org Я вижу, что размер пакета Lamar составляет всего 140,56 КБ.Но размер моего пакета вырос с ~ 450 КБ до ~ 8 МБ после того, как я добавил Lamar в свой проект и упаковал его как глобальный инструмент dotnet.Затем я попытался добавить другой нюгет для IOC Autofac nuget.org размер его загрузки составляет 272,5 КБ (больше).Но после ссылки на него и упаковки моего глобального инструмента я обнаружил, что теперь мой пакет намного меньше (всего 516 КБ против ~ 8 МБ).Почему?

Есть ли лучший способ найти / предсказать, насколько большим станет ваш пакет nuget после обращения к некоторому новому nuget?

1 Ответ

0 голосов
/ 30 января 2019

Невозможно предсказать, что будет отображаться в пакете, хотя вы должны учитывать, что в него входят не только зависимости , на которые вы ссылаетесь , но также любые зависимости те нужны - переходные зависимости.Все, что не входит в пакет .NET Core App (подумайте «основные требования времени выполнения»), должно быть упаковано.

Вы можете посмотреть на NuGet странице Lamar и посмотреть2.0.4 нужны LamarCompiler и Microsoft.Extensions.DependencyInjection.Abstractions.Те, в свою очередь, нуждаются в других вещах.

Я бы рекомендовал захватить NuGet Package Explorer .Как только вы создадите свой пакет инструментов, вы можете открыть его в этом, чтобы просмотреть, что на самом деле там.(Технически, вы также можете просто переименовать его из .nupkg в .zip и открыть его, но проводник делает это хорошо.)

После добавления Lamar я вижу ...

  • Lamar.dll
  • LamarCompiler.dll
  • Microsoft.CodeAnalysis.CSharp.dll
  • Microsoft.CodeAnalysis.CSharp.Scripting.dll
  • Microsoft.CodeAnalysis.CSharp.Workspaces.dll
  • Microsoft.CodeAnalysis.dll
  • Microsoft.CodeAnalysis.Scripting.dll
  • Microsoft.CodeAnalysis.VisualBasic.dll
  • Microsoft.CodeAnalysis.VisualBasic.Workspaces.dll
  • Microsoft.CodeAnalysis.Workspaces.dll
  • Microsoft.Extensions.DependencyInjection.Abstractions.dll
  • System.Composition.AttributedModel.dll
  • System.Composition.Hosting.dll
  • System.Composition.Runtime.dll
  • System.Composition.TypedParts.dll

Большинство из этогоПохоже, вокруг анализаторы Roslyn - материал CodeAnalysis. Я вижу, что ссылка указана в исходном коде LamarCompiler , хотя обычно я вижу, что он установлен как PrivateAssets=all, чтобы гарантировать, что он не будет включен в проект и включен таким образом.Обычно у вас нет анализаторов Roslyn в качестве проектных зависимостей, так как они создаются во время сборки.Тем не менее, я не знаю, намеренно ли это;это может быть что-то, о чем вы хотели бы спросить людей из Ламара.Это может быть просто небольшая оплошность, или может быть причина.

TLDR:

  • Вы не можете угадать размер, просто постройте его и посмотрите.
  • Используйте NuGet Package Explorer, чтобы увидеть, что в итоге оказалось в пакете.
  • Используйте NuGet Pages для пакетов, чтобы увидеть, что в цепочке.
  • Не бойтесь заходить в источникчтобы одна из ваших зависимостей увидела, вызывает ли она что-то неожиданное, и если вы видите это, спросите у соответствующего владельца, намеренно ли это.
...