C# 大型软件包目录.NET解决方案

C# 大型软件包目录.NET解决方案,c#,asp.net-mvc,asp.net-identity,C#,Asp.net Mvc,Asp.net Identity,我开发了一个asp.NETMVC应用程序来管理我们组织中的一些业务流程。此应用程序使用以下主要框架: NETMVC5.0 实体框架6.0,用于管理数据库访问 管理安全的MS Identity 2.0:用户、角色、访问授权 自举 我注意到这个解决方案的packages目录变得非常庞大(超过350MB)。 我尝试使用Reformer的“删除未使用的包”功能,但它并没有显著减小包文件夹的大小。我认为有些不必要的包必须删除。因此,我的问题是: 对于一个简单的asp.net MVC解决方案,有一个大于

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

  • NETMVC5.0
  • 实体框架6.0,用于管理数据库访问
  • 管理安全的MS Identity 2.0:用户、角色、访问授权
  • 自举
我注意到这个解决方案的packages目录变得非常庞大(超过350MB)。 我尝试使用Reformer的“删除未使用的包”功能,但它并没有显著减小包文件夹的大小。我认为有些不必要的包必须删除。因此,我的问题是:

  • 对于一个简单的asp.net MVC解决方案,有一个大于350 MB的包目录是正常的吗

  • 如何减小此目录的大小并删除所有未使用和不必要的包


  • 感谢您的帮助。

    我的一个项目中包含的软件包是450Mb,可以按需要工作,没有问题。所以我不会那么担心你的350Mb

    如果Resharper无法删除任何未使用的软件包,则表明它们在应用程序中的某个时刻都在使用。这是一篇关于Resharpers工具的有用文章

    注意:您还可以使用Visual Studio扩展解析器-


    如果正在使用这些包,则在尝试构建时项目将中断,并且该包已被删除。

    我的一个项目中包含的包是450Mb,可以按照需要正常工作,不会出现问题。所以我不会那么担心你的350Mb

    如果Resharper无法删除任何未使用的软件包,则表明它们在应用程序中的某个时刻都在使用。这是一篇关于Resharpers工具的有用文章

    注意:您还可以使用Visual Studio扩展解析器-


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

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

    这些包中有大量元数据,每个包都以
    .nupkg
    的形式存在,并以提取的形式存在,其大小是原来的两倍(不包括用于包的ZIP压缩)。因此,如果像MVC5.2这样的包是300KB,而它的提取大小是1,5MB,那么对于一个包来说,总共已经接近2MB了。您可能有几十个(如果不是更多的话)包,每个包都占用自己的磁盘空间

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

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


    解决方案中安装的软件包的多个版本也会导致旧版本与新版本共存;立即升级解决方案的所有软件包(“管理解决方案的NuGet软件包”)或在“合并”选项卡上合并它们。这确保了所有项目都引用相同的软件包版本。

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

    这些包中有大量元数据,每个包都以
    .nupkg
    的形式存在,并以提取的形式存在,其大小是原来的两倍(不包括用于包的ZIP压缩)。因此,如果像MVC5.2这样的包是300KB,而它的提取大小是1,5MB,那么对于一个包来说,总共已经接近2MB了。您可能有几十个(如果不是更多的话)包,每个包都占用自己的磁盘空间

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

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


    解决方案中安装的软件包的多个版本也会导致旧版本与新版本共存;立即升级解决方案的所有软件包(“管理解决方案的NuGet软件包”)或在“合并”选项卡上合并它们。这确保了所有项目都引用相同的软件包版本。

    我使用了一个脚本,该脚本删除了除英语和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"
    

    我使用了一个脚本,删除了除英语和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"
    

    由于尺寸过大,您遇到了什么实际问题?包装尺寸过大是可以的,我想知道您为什么要减小它?如果您从软件包目录中删除,VS将自动恢复丢失的软件包。我只希望有一个大小尽可能小的应用程序。我注意到有些软件包是重复安装的(比如EntityFramework.6.1.0和EntityFramework.6.1.3)。所以,我只是想知道是否有一些技巧来清理“packages”目录。由于太大,您有什么实际问题?让包变大没关系,我想知道您为什么要减少它?如果您从软件包目录中删除,VS将自动恢复丢失的软件包。我只希望有一个大小尽可能小的应用程序。我注意到有些软件包是重复安装的(比如EntityFramework.6.1.0和EntityFramework.6.1.3)。所以,我只是想知道是否有一些技巧来清理“packages”目录。