庞大的包目录.NET解决方案

时间:2018-06-27 12:13:01

标签: c# asp.net-mvc asp.net-identity

我开发了一个asp.net mvc应用程序来管理组织中的某些业务流程。此应用程序使用以下主要框架:

  • Asp.NET MVC 5.0;
  • 用于管理数据库访问的实体框架6.0;
  • 用于管理安全性的MS Identity 2.0:用户,角色,访问授权...;
  • 引导程序;

我注意到该解决方案的packages目录变得非常巨大(超过350 MB)。 我尝试使用ReShaper的“删除未使用的程序包”功能,但它并未显着减小程序包文件夹的大小。我认为必须删除一些不必要的软件包。所以,我的问题是:

  1. 对于一个简单的asp.net MVC解决方案,是否有一个packages目录大于350 MB是否正常?

  2. 如何减小此目录的大小并删除所有未使用和不必要的软件包?

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

我的一个项目中包含的软件包为450Mb,可以按需工作,没有任何问题。因此,我不必担心您的容量为350Mb。

如果Resharper无法删除任何未使用的软件包,则表明它们已在您的应用程序中的某个时刻被使用。 How can you find the unused NuGet packages in a solution?是有关Resharpers工具的有用文章。

请注意,您还可以使用Visual Studio Extension ResolveUR-Resolve Unused References

如果正在使用软件包,则在尝试构建时项目会中断,并且软件包已被删除。

答案 1 :(得分:2)

现在是2018年,磁盘空间很便宜,350 MB并不“巨大”。

这些程序包中有大量的元数据,并且每个程序包都以.nupkg的形式存在,并且以提取的形式存在,其大小加倍(除非用于程序包的ZIP压缩)。因此,如果像MVC 5.2这样的程序包为300 KB,而提取的大小为1.5 MB,那么对于一个程序包而言,总计已经接近2 MB。您可能有几十个(甚至更多)软件包,每个软件包都占用自己的磁盘空间。

仅当团队中的其他人升级软件包,然后拉出他们的版本时,这才成为问题,您的软件包目录中仍然包含较旧的版本以及较新的版本。

因此,如果发生这种情况,可以定期清理软件包目录。然后,将仅再次下载当前使用的软件包。

解决方案中安装的软件包的多个版本也会导致较旧的版本与较新的版本并存;一次升级一个解决方案的所有软件包(“管理解决方案的NuGet软件包”)或在“合并”选项卡上对其进行合并。这样可以确保所有项目都引用相同的软件包版本。

答案 2 :(得分:0)

我使用脚本删除了英语以外的其他语言以及未使用的Android / Xamarin之类的脚本,从而大大减小了尺寸。

FOR /F %%G IN ('DIR packages\ru /B /A:D /S') DO RMDIR /S /Q "%%G"
FOR /F %%G IN ('DIR packages\ja /B /A:D /S') DO RMDIR /S /Q "%%G"
FOR /F %%G IN ('DIR packages\de /B /A:D /S') DO RMDIR /S /Q "%%G"
FOR /F %%G IN ('DIR packages\fr /B /A:D /S') DO RMDIR /S /Q "%%G"
FOR /F %%G IN ('DIR packages\es /B /A:D /S') DO RMDIR /S /Q "%%G"
FOR /F %%G IN ('DIR packages\it /B /A:D /S') DO RMDIR /S /Q "%%G"
FOR /F %%G IN ('DIR packages\ko /B /A:D /S') DO RMDIR /S /Q "%%G"
FOR /F %%G IN ('DIR packages\zh* /B /A:D /S') DO RMDIR /S /Q "%%G"
FOR /F %%G IN ('DIR packages\monoandroid* /B /A:D /S') DO RMDIR /S /Q "%%G"
FOR /F %%G IN ('DIR packages\sl* /B /A:D /S') DO RMDIR /S /Q "%%G"
FOR /F %%G IN ('DIR packages\wp* /B /A:D /S') DO RMDIR /S /Q "%%G"