Nuget:好主意检查包文件夹

时间:2017-07-31 07:50:22

标签: nuget

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

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

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

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

THX。

1 个答案:

答案 0 :(得分:0)

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

  1. 归档第三方软件包不是您的应用程序的责任。您是否需要处理该风险,然后构建一个针对此类的解决方案(例如:使用已正确备份的私有nuget存储库)。
  2. 避免在代码库中重复 - 如果您使用正确发布的软件包,那么packages.config文件内容足以可靠地再现您的应用程序所需的确切依赖项。
  3. 同步是一项努力 - 保持packages.config和packages文件夹同步 - 一旦您开始将它们包含在源代码管理中,每个使用软件包的开发人员都会监视并添加或删除软件包到源代码控制。
    1. 如果开发人员忘记添加,则本地构建仍然失败。
    2. 如果他们忘记删除不再需要的部分,那么您的可下载集将包含垃圾。
  4. VCS数据集大小 - 存储它们会不必要地扩大您的版本控制存储空间。这些软件包通常包含N个不同的平台dll,工具和诸如此类的东西。如果您的依赖关系始终保持最新,那么10年后您的VCS历史记录将包含大量不相关的垃圾。存储很便宜,但仍然.. ..
  5. 相反,请考虑使用私有nuget存储库,其目的是提供和归档应用程序所需的包,并设置项目以首先检查项目nuget存储库。如果您的开发人员需要离线编译支持,那么他们可以在他们的构建框上设置项目存储库镜像,并为repos配置以下回退结构:

    1. 开发人员本地项目存储库(例如:文件夹)
    2. 共享项目存储库(例如:Nuget.Server
    3. (nuget.org)
    4. 可以在此处找到如何配置多个存储库的指南:How to configure local Nuget Repository