为什么在引用 nuget 之后,我的打包工具大小比 nuget.org 中提供的大小信息增加了很多?
Why after referencing nuget, my packed tool size increased much more comparing with size info provided in nuget.org?
为什么我在 nuget.org 中看到的包下载大小和使用给定 nuget 打包后大小增加之间存在如此巨大的差异?
例如:
在 nuget.org 中,我看到 Lamar 软件包 的下载大小仅为 140.56 KB。
但是在我将 Lamar 添加到我的项目并将其打包为 dotnet 全局工具后,我的包的大小从 ~450KB 增加到 ~8MB。
然后我尝试为 IOC 添加不同的 nuget Autofac. In nuget.org 它的下载大小是 272.5 KB(更大)。
但是在引用它并打包我的全局工具后,我发现现在我的包小了很多(只有 516KB vs ~8MB)。为什么?
有没有更好的方法来查找/预测在引用一些新的 nuget 后您的 nuget 包会变大多少?
无法预测包中会显示什么,但您必须考虑不仅您引用的依赖项,而且还任何依赖项那些需要-传递依赖项。 .NET Core 应用程序包中未包含的任何内容(认为 "basic runtime requirements")都必须打包。
您可以查看 NuGet page for Lamar 并查看 2.0.4 需要 LamarCompiler
和 Microsoft.Extensions.DependencyInjection.Abstractions
。反过来,那些需要其他东西。
我建议抓住 NuGet Package Explorer。构建工具包后,您可以将其弹出以浏览其中的实际内容。 (从技术上讲,您也可以将它从 .nupkg 重命名为 .zip 并打开它,但资源管理器让它变得更好。)
加入拉马尔后,我看到...
- 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 的东西。 I see that is referenced in the LamarCompiler source 虽然我通常将其设置为 PrivateAssets=all
以确保它不会像这样捆绑到项目中并包含在内。通常你没有 Roslyn 分析器作为项目依赖项,因为它们是构建时的东西。但是,我不知道这是不是故意的;这可能是您想询问拉马尔人的事情。这可能只是一个小疏忽,也可能是有原因的。
TLDR:
- 尺寸你猜不出来,拼起来看就好了。
- 使用 NuGet 包资源管理器查看包中的内容。
- 使用包的 NuGet 页面查看链接的内容。
- 不要害怕进入你的依赖项之一的源代码,看看它是否带来了意想不到的东西,如果你看到了,请询问相应的所有者是否是故意的。
为什么我在 nuget.org 中看到的包下载大小和使用给定 nuget 打包后大小增加之间存在如此巨大的差异?
例如: 在 nuget.org 中,我看到 Lamar 软件包 的下载大小仅为 140.56 KB。 但是在我将 Lamar 添加到我的项目并将其打包为 dotnet 全局工具后,我的包的大小从 ~450KB 增加到 ~8MB。 然后我尝试为 IOC 添加不同的 nuget Autofac. In nuget.org 它的下载大小是 272.5 KB(更大)。 但是在引用它并打包我的全局工具后,我发现现在我的包小了很多(只有 516KB vs ~8MB)。为什么?
有没有更好的方法来查找/预测在引用一些新的 nuget 后您的 nuget 包会变大多少?
无法预测包中会显示什么,但您必须考虑不仅您引用的依赖项,而且还任何依赖项那些需要-传递依赖项。 .NET Core 应用程序包中未包含的任何内容(认为 "basic runtime requirements")都必须打包。
您可以查看 NuGet page for Lamar 并查看 2.0.4 需要 LamarCompiler
和 Microsoft.Extensions.DependencyInjection.Abstractions
。反过来,那些需要其他东西。
我建议抓住 NuGet Package Explorer。构建工具包后,您可以将其弹出以浏览其中的实际内容。 (从技术上讲,您也可以将它从 .nupkg 重命名为 .zip 并打开它,但资源管理器让它变得更好。)
加入拉马尔后,我看到...
- 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 的东西。 I see that is referenced in the LamarCompiler source 虽然我通常将其设置为 PrivateAssets=all
以确保它不会像这样捆绑到项目中并包含在内。通常你没有 Roslyn 分析器作为项目依赖项,因为它们是构建时的东西。但是,我不知道这是不是故意的;这可能是您想询问拉马尔人的事情。这可能只是一个小疏忽,也可能是有原因的。
TLDR:
- 尺寸你猜不出来,拼起来看就好了。
- 使用 NuGet 包资源管理器查看包中的内容。
- 使用包的 NuGet 页面查看链接的内容。
- 不要害怕进入你的依赖项之一的源代码,看看它是否带来了意想不到的东西,如果你看到了,请询问相应的所有者是否是故意的。