Nuget - 是否在源代码管理中存储包?

Nuget - store packages in source control, or not?

我们目前不使用 nuget 作为我们的依赖项,更喜欢采用老式的方式并将它们全部放在一个 libs 文件夹中并从那里引用。我知道。所以 1990 年代。

无论如何,nuget 总是让我感到有点反胃......你知道,对云的依赖等等。因此,我发现自己主要同意 Mark Seeman(参见此处:http://blog.ploeh.dk/2014/01/29/nuget-package-restore-considered-harmful/)的观点,他说:

Personally, I always disable the feature and instead check in all packages in my repositories. This never gives me any problems.

麻烦的是,这在版本 3 中发生了变化,您不能将包与解决方案一起存储,如下所述:https://oren.codes/2016/02/08/project-json-all-the-things/。哪个搞砸了将它们检查到源代码中。

所以,我在这里什么都不担心吗?我应该喝 nuget 井,还是站在 Seeman 先生和呃谨慎的一边?

在源代码管理中存储 NuGet 包是一个非常、非常的坏主意。 我不小心做了一次,结果我的源代码大大膨胀,那是在 .NET Core 之前...

畅饮 NuGet。现在大多数软件组件都以类似的方式打包(NPM、Bower 等)。引用的博客 post 已有两年历史,包管理在 .NET 世界中正在迅速变化,所以这是我最近的一些经验。

  • 无法从 nuget.org 中删除 NuGet 包。它们可以隐藏, 但是如果你的应用程序请求一个隐藏的包,它会下载它 像平常一样。它永远不会消失在虚无中。
  • 'Enable Package Restore' 不再有问题,因为它现在是 NuGet 2.7+ 中的默认选项。你别无选择了。
  • 包不再按解决方案存储,而是按机器存储,这将节省大量带宽并减少构建时的初始获取周期。
  • 如果您使用 .NET Core 构建一个新项目,您将拥有更多包,因为整个 BCL 将作为 NuGet 包提供。您真的要将所有 System.* 包签入源代码吗?

您想在源代码管理中存储 Nuget 包的原因很简单。您的组织不希望您的构建服务器访问互联网。