2017-07-31 25 views
0

我其实正在考虑使用NuGet的亲和好处。在我们目前的软件中,我们将每个外部参考存储在一个通用的参考文件夹中(这是对我们的软件版本控制系统的承诺)。随着时间的推移,这种方法变得越来越痛苦,因为我们必须将不同的版本存储到同一个库中。Nuget:检查包文件夹中的好主意

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

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

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

Thx。

回答

0

我会反对在您的版本控制系统中存储外部nuget软件包。

  1. 这不是你的应用程序的责任存档第三方软件包。如果你需要关注这个风险,那么建立一个适用于这种风险的解决方案(例如:使用私人nuget存储库进行适当备份)。
  2. 避免代码库中的重复 - 如果您使用正确发布的软件包,那么packages.config文件内容足以可靠地再现应用程序所需的确切依赖关系。
  3. 同步是一种努力 - 保持packages.config和packages文件夹处于同步状态 - 一旦开始将它们包含在源代码控制中,每个使用包的开发者都会监视并添加或删除包到源代码管理。
    1. 如果开发者忘记添加,那么本地构建仍然失败。
    2. 如果他们忘记删除不再需要的部分,那么您的可下载集合将包含垃圾。
  4. VCS数据集大小 - 存储它们将不必要地扩大您的版本控制存储。通常这些软件包包含N个不同的平台dll,工具和其他非常快速的东西。如果你不断更新你的依赖关系,那么在10年后你的VCS历史将包含大量不相关的垃圾。存储是便宜的,但仍然..

相反,考虑有一个私人nuget存储库的目的是提供和存档您的应用程序需要的软件包,并建立您的项目,以检查您的项目nuget存储库第一。如果开发人员需要使用离线编译支持那么他们可以建立项目库的镜子上自己创建盒子和配置回购以下备用结构:

  1. 开发本地项目库(如:文件夹)
  2. 共享项目信息库(例如:Nuget.Server
  3. (nuget。org)

指南如何配置多个存储库可以在这里找到:How to configure local Nuget Repository

相关问题