Nuget:签入包文件夹的好主意

Nuget:签入包文件夹的好主意,nuget,Nuget,我实际上在考虑使用NuGet的利弊。在我们当前的软件中,我们将每个外部引用存储在一个公共引用文件夹中(提交给我们的软件版本控制系统)。随着时间的推移,这种方法变得越来越痛苦,因为我们必须将不同的版本存储到同一个库中 由于我们的开发人员有时在客户站点(并非所有客户都提供internet连接…),我们不会直接使用NuGet,因为NuGet软件包无法恢复 基于此,我实际上正在考虑使用NuGet并将软件包文件夹存储在我们的软件版本控制系统中 有人知道这个解决方案是否有缺点吗?有人有更好的建议吗 Thx.

我实际上在考虑使用NuGet的利弊。在我们当前的软件中,我们将每个外部引用存储在一个公共引用文件夹中(提交给我们的软件版本控制系统)。随着时间的推移,这种方法变得越来越痛苦,因为我们必须将不同的版本存储到同一个库中

由于我们的开发人员有时在客户站点(并非所有客户都提供internet连接…),我们不会直接使用NuGet,因为NuGet软件包无法恢复

基于此,我实际上正在考虑使用NuGet并将
软件包
文件夹存储在我们的软件版本控制系统中

有人知道这个解决方案是否有缺点吗?有人有更好的建议吗


Thx.

我反对在版本控制系统中存储外部nuget包

  • 归档第三方软件包不是应用程序的责任。如果您需要考虑这种风险,那么构建一个针对这种风险的解决方案(例如:使用正确备份的私有nuget存储库)
  • 避免代码库中的重复-如果使用正确发布的软件包,那么packages.config文件内容足以可靠地再现应用程序所需的确切依赖关系
  • 同步是一项工作-保持packages.config和packages文件夹同步-一旦开始将它们包括在源代码管理中,每个使用包的开发人员都会监视并向源代码管理中添加或删除包。
  • 如果开发人员忘记添加,那么本地构建仍然失败
  • 若他们忘记删除不再需要的部分,那个么你们的可下载集将包含垃圾
  • VCS数据集大小-存储它们将不必要地扩大版本控制存储空间。这些包通常包含N个不同的平台DLL、工具等等,它们加起来相当快。如果你不断更新你的依赖关系,那么10年后你的风投历史将包含大量不相关的垃圾。存储很便宜,但仍然

    取而代之的是,考虑拥有一个私有NuGET存储库,目的是服务和存档您的应用程序需要的包,并设置您的项目首先检查您的项目NuGET存储库。如果您的开发人员需要脱机编译支持,则他们可以在其生成框上设置项目存储库镜像,并为repo配置以下回退结构:

  • 开发人员本地项目存储库(例如:文件夹)
  • 共享项目存储库(例如:)
  • (nuget.org)
  • 可以在此处找到如何配置多个存储库的指南: