【发布时间】:2022-01-02 12:00:46
【问题描述】:
我将一个包 (.net461) 发布到一个提要,这个包通过 NuGet 管理器导入其他几个提要。
但是当我下载软件包时,我发现 nupkg zip 文件在 lib/net461 文件夹中没有依赖 dll。我只能看到项目 dll 本身,没有依赖 dll。我对 nuget 如何处理这些依赖项以及如果依赖项 dll 不存在情况如何工作感到困惑?感谢任何帮助!
【问题讨论】:
我将一个包 (.net461) 发布到一个提要,这个包通过 NuGet 管理器导入其他几个提要。
但是当我下载软件包时,我发现 nupkg zip 文件在 lib/net461 文件夹中没有依赖 dll。我只能看到项目 dll 本身,没有依赖 dll。我对 nuget 如何处理这些依赖项以及如果依赖项 dll 不存在情况如何工作感到困惑?感谢任何帮助!
【问题讨论】:
Nuget 不包含依赖项,它通过添加有关需要下载其他包的信息来引用它们。
查看它们的最简单方法是使用 NugetPackageManager(来自here)。如果你用这个工具打开 nupkg 文件,你可以在包元数据的底部看到你包的依赖关系。
如果您在另一个项目(“C”)中使用您的 nuget(我们称之为“B”),那么依赖项(“A”)将在构建期间自动复制到“C”的项目输出文件夹中,所以你的图书馆会正常工作。即 C 引用 B 和 B 引用 A。在构建 C 时,所有三个输出 A、B 和 C 将自动复制在一起,以便 C 运行。这意味着在编写 C 时,甚至不需要知道库 B 使用 A。但是,如果 C 还需要使用 A 中的类型或方法,则需要直接引用。但同样,无需手动复制任何内容,只需将 A 的 nuget 引用添加到项目 C 即可。
【讨论】: