Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么MathNet.Numerics NuGet包这么大?_C#_Nuget_Math.net_Mathnet Numerics - Fatal编程技术网

C# 为什么MathNet.Numerics NuGet包这么大?

C# 为什么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将MathNet.Numerics添加到我的C#解中。解决方案文件夹中的包目录膨胀到大约50MB!然而,我可以简单地下载MathNet dll并只使用它,它只占用1.5 MB。如果我还需要文档,我可以包含XML,这是另外3.5MB


我使用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项目中使用该包源代码