C# 为什么MathNet.Numerics NuGet包这么大?
我最近通过NuGet将MathNet.Numerics添加到我的C#解中。解决方案文件夹中的包目录膨胀到大约50MB!然而,我可以简单地下载MathNet dll并只使用它,它只占用1.5 MB。如果我还需要文档,我可以包含XML,这是另外3.5MBC# 为什么MathNet.Numerics NuGet包这么大?,c#,nuget,math.net,mathnet-numerics,C#,Nuget,Math.net,Mathnet Numerics,我最近通过NuGet将MathNet.Numerics添加到我的C#解中。解决方案文件夹中的包目录膨胀到大约50MB!然而,我可以简单地下载MathNet dll并只使用它,它只占用1.5 MB。如果我还需要文档,我可以包含XML,这是另外3.5MB 我使用Nuget是错误的还是预期的行为?它似乎在浪费大量空间。它看起来像是预期的行为。由NuGet包所有者决定在一个包中放入多少版本 您可能可以安全地删除它,但每次恢复NuGet文件时它都会返回。如果您担心构建或发布版本中包含大量膨胀,请检查.cs
我使用Nuget是错误的还是预期的行为?它似乎在浪费大量空间。它看起来像是预期的行为。由NuGet包所有者决定在一个包中放入多少版本
您可能可以安全地删除它,但每次恢复NuGet文件时它都会返回。如果您担心构建或发布版本中包含大量膨胀,请检查
.csproj
文件,并确保只通过所需的MathNet.Numerics.dll
版本进行复制。包中包含相同版本的多个版本的原因是利益冲突:
- 我们愿意支持一个新的方案
- 我们希望利用高级功能,即使它们仅在某些平台上可用(通常仅在完整的.Net framework上可用,如TPL或System.Numerics),这不仅是为了性能,也是为了兼容性和可用性
- 通过每个版本(包括所有平台)只发布一个包来避免下游依赖性噩梦
如果这会给你带来问题,考虑把这个点与团队(新的)联系起来,或者在Github中打开一个问题。
PS:如果NuGet不适合您,我们还为您提供手动处理和精确选择所需内容的功能。您只需查看packages文件夹的内容即可。。如果这样做,您会注意到有一个4MB的nupkg文件和7个子文件夹,每个子文件夹针对一个特定的目标项目组合。您可能只需要删除那些您不感兴趣的配置。@Jeroenvanevel是的,大部分膨胀似乎来自多个Android版本的软件包。NuGet break会不会因为它期望这些东西会出现在那里呢?你可以试试看它是否会出现。我删除了net35和net40,重建了项目,它仍然在构建。NuGet PM还表示它仍在安装,所以我认为这不会是一个问题。为什么这很重要?无论如何,你不应该把二进制文件放在源代码管理中(这是NuGet最好的东西之一),50 MB是微不足道的。@DanielMann如果你曾经负责过一个大型复杂的产品,那么你就会意识到有时候将库(二进制文件)置于源代码管理下是最好的选择。NuGet有其优点和缺点,与任何系统一样。此外,作为源代码管理/重新下载中二进制文件的替代方案,您可以将包复制到本地nuget服务器,并在yoir项目中使用该包源代码