创建具有第三方依赖项的nuget包:何时内部化?

创建具有第三方依赖项的nuget包:何时内部化?,nuget,nuget-package,Nuget,Nuget Package,如果您要创建一个NuGet包,其中必须添加一些第三方依赖项,那么基本上有两个选项: 内部化程序包的lib文件夹中的DLL 在nuspec文件中将第三方库作为依赖项引用 例如,我注意到RavenDB已经内部化了它的所有第三方依赖项,而其他一些项目明确地依赖于其他NuGet包 我想知道在什么时候选择这两种方法中的任何一种是否有最佳实践/提示。 每种方法的优缺点是什么?本着NuGet的良好精神,我建议添加对第三方软件包的依赖,而不是内部化DLL。NuGet是围绕“依赖项”构建的,它完全有理由依赖这些依

如果您要创建一个NuGet包,其中必须添加一些第三方依赖项,那么基本上有两个选项:

  • 内部化程序包的lib文件夹中的DLL
  • 在nuspec文件中将第三方库作为依赖项引用
  • 例如,我注意到RavenDB已经内部化了它的所有第三方依赖项,而其他一些项目明确地依赖于其他NuGet包

    我想知道在什么时候选择这两种方法中的任何一种是否有最佳实践/提示。
    每种方法的优缺点是什么?

    本着NuGet的良好精神,我建议添加对第三方软件包的依赖,而不是内部化DLL。NuGet是围绕“依赖项”构建的,它完全有理由依赖这些依赖项。

    我敢说,它更多地取决于您的实现是否是特定于版本的,以及是否有可能在更新和发布依赖项时使您的包从中受益(或者如果不推荐某个实现,则可能会损坏)


    另外,通过使包具有nuget依赖项,可以减少重复和目录大小(以及包大小)。更常见的库只包含在您的项目中一次(但任何其他可能也使用此库的软件包都会受益,因为它已经包含在内)。

    MS正在将大量.net代码移动到具有依赖关系的nuget软件包中。我同意