NuGet 包中不必要的文件夹
Unnecessary folders from NuGet packages
我的 C# 应用目标框架是 4.6.2
我从 NuGet 下载了一些包,我的问题:
当我在文件资源管理器中打开我的应用程序时,在 packages\somepackage\lib 下我有这个:
我真的需要 net 40 和 net45 文件夹吗?
我可以删除它吗?我怎么知道什么是不必要的?
NuGet 保留文件夹的原因
Nuget使用两种不同的方法来管理每个项目的包:
- packages.config
- 包装参考
packages.config
仅用于无法自动导入和引用 NuGet 包的旧项目文件。 NuGet 将更改 *.csproj 文件以添加引用。因为它改变了受版本控制的代码并且不能使用绝对路径,所以它应该将NuGet包缓存文件夹放在每个解决方案中。在这种情况下,NuGet 可能能够删除无用的文件夹。 但是 这是旧版 NuGet 版本(版本 2.x)的行为。 NuGet 不想修复遗留行为。
PackageReference
是 NuGet 引用的新行为。 NuGet 将所有 NuGet 缓存放在一个公共文件夹中,这样相同的 NuGet 包就不会占用太多磁盘 space。在这种情况下,NuGet 不知道整个计算机项目中的每个 lib 版本,因此它无法删除 无用 版本文件夹。
结论: NuGet 不知道在 PacakgeReference
中删除它们是否安全并且不想在 packages.config
中删除它们。
将 packages.config
升级到 PackageReference
更新:
从 VisualStudio 2017 版本 15.7 开始,有一项集成功能允许您在不使用第三方工具的情况下进行此升级 Migrate from packages.config to PackageReference
在解决方案资源管理器中,右键单击引用节点或 packages.config 文件,然后 select 将 packages.config 迁移到 PackageReference...
您可以尝试 Visual Studio 扩展 NuGet PackageReference Upgrader 将您的 packages.config
升级到 PackageReference
这样它就不会在每个解决方案文件夹中存储库以占用您的磁盘space.
P.s.
NuGet 在我的 C:\
上占用了将近 10GB 的空间。
我的 C# 应用目标框架是 4.6.2
我从 NuGet 下载了一些包,我的问题:
当我在文件资源管理器中打开我的应用程序时,在 packages\somepackage\lib 下我有这个:
我真的需要 net 40 和 net45 文件夹吗?
我可以删除它吗?我怎么知道什么是不必要的?
NuGet 保留文件夹的原因
Nuget使用两种不同的方法来管理每个项目的包:
- packages.config
- 包装参考
packages.config
仅用于无法自动导入和引用 NuGet 包的旧项目文件。 NuGet 将更改 *.csproj 文件以添加引用。因为它改变了受版本控制的代码并且不能使用绝对路径,所以它应该将NuGet包缓存文件夹放在每个解决方案中。在这种情况下,NuGet 可能能够删除无用的文件夹。 但是 这是旧版 NuGet 版本(版本 2.x)的行为。 NuGet 不想修复遗留行为。
PackageReference
是 NuGet 引用的新行为。 NuGet 将所有 NuGet 缓存放在一个公共文件夹中,这样相同的 NuGet 包就不会占用太多磁盘 space。在这种情况下,NuGet 不知道整个计算机项目中的每个 lib 版本,因此它无法删除 无用 版本文件夹。
结论: NuGet 不知道在 PacakgeReference
中删除它们是否安全并且不想在 packages.config
中删除它们。
将 packages.config
升级到 PackageReference
更新: 从 VisualStudio 2017 版本 15.7 开始,有一项集成功能允许您在不使用第三方工具的情况下进行此升级 Migrate from packages.config to PackageReference
在解决方案资源管理器中,右键单击引用节点或 packages.config 文件,然后 select 将 packages.config 迁移到 PackageReference...
您可以尝试 Visual Studio 扩展 NuGet PackageReference Upgrader 将您的 packages.config
升级到 PackageReference
这样它就不会在每个解决方案文件夹中存储库以占用您的磁盘space.
P.s.
NuGet 在我的 C:\
上占用了将近 10GB 的空间。