【问题标题】:NuGet or assemblies folder for shared 3rd party DLL's?共享 3rd 方 DLL 的 NuGet 或程序集文件夹?
【发布时间】:2016-12-30 15:17:45
【问题描述】:

我有大约 10 到 15 个项目,这些项目具有单独的解决方案,这些解决方案引用了 microsoft .NET 商店中的第 3 方 DLL。我们要解决的问题之一是跨项目使用的 DLL 版本的一致性(例如,所有项目中的 Netwonsoft 8.0.3,而不是取决于项目创建时间的单独版本)。

我在以前的职位上看到过以两种不同的方式完成此操作,并且想知道是否有任何其他选项可以解决此问题。

  1. 对于公司内任何项目的解决方案中引用的所有第三方 DLL,我都使用了公司 NuGet。 DLL 将被更新,然后提供给项目中的开发人员,以便在他们自己的解决方案中下拉和升级(如果需要)。
  2. 另一家公司在源代码中有一个程序集文件夹,其中包含所有“已批准”的第三方 DLL,所有引用都位于此目录中。

我确实看到了这个问题,但它只提供了上述两种解决方案之一:Where should you store 3rd party assemblies?

除了上面列出的之外,还有其他选择吗?

【问题讨论】:

    标签: c# .net visual-studio dll nuget


    【解决方案1】:

    尽可能使用 NuGet。主要原因是 Git 不能很好地处理大型二进制文件,并且为此使用 LFS 没有多大意义,因为有一个有效的替代方案。 TFVC 对大型二进制文件的问题较少,但如果您使用 TFVC,我会牢记未来向 Git 的迁移。

    请记住,在这种情况下,不仅 NuGet,而且可能还有 npm 和其他包源。

    如果您想强制使用某个版本,请创建一个您挂接到 CI 管道中的自定义任务。这样您就可以轻松发出警告或设置某种策略。自定义任务可以获取 packages.config 文件,扫描引用的包,然后查询 TFS/VSTS 包管理提要以查看它是否使用最新版本(或正在使用最新的次要版本)...(或正在使用至少返回 x 个版本)...或从某个地方的 json 文件或 xml 文件中获取批准的版本并针对该版本进行验证...

    【讨论】:

    • 使用 NPM 是我认为可能成为我们未来项目和引用程序集的绊脚石的事情之一。您是否认为企业 NuGet 服务器会是一个更好的解决方案来帮助在未来缓解这个问题?老实说,我对 Node 或 NPM 还不是很熟悉,但我仍然了解所有这些是如何工作的。
    • 我建议使用 Proget 或使用 TFS2017 包管理功能设置您自己的 NuGet 服务器。
    【解决方案2】:

    在您的源代码控制中,首次填充存储库时,使用所需的依赖 DLL 提交并推送到 Master。由于所有用户,甚至是其他分支上的用户,都将从存储库中提取,因此您要确保他们收到他们需要的所有 DLL。如果您指的是 GAC 中的 DLL,这只会成为一个问题,这可以通过 GACUtil 解决,或者只是确保每个人都使用相同的 Windows 版本。

    【讨论】:

      猜你喜欢
      • 2012-08-05
      • 2013-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-19
      • 2013-08-21
      • 1970-01-01
      相关资源
      最近更新 更多