【问题标题】:Nuget package don't have dependency dlls in their nupkg zipNuget 包的 nupkg zip 中没有依赖 dll
【发布时间】:2022-01-02 12:00:46
【问题描述】:

我将一个包 (.net461) 发布到一个提要,这个包通过 NuGet 管理器导入其他几个提要。

但是当我下载软件包时,我发现 nupkg zip 文件在 lib/net461 文件夹中没有依赖 dll。我只能看到项目 dll 本身,没有依赖 dll。我对 nuget 如何处理这些依赖项以及如果依赖项 dll 不存在情况如何工作感到困惑?感谢任何帮助!

【问题讨论】:

    标签: c# .net nuget


    【解决方案1】:

    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 即可。

    【讨论】:

    • 谢谢!如果包元数据中有相应的引用,我应该能够使用依赖包中的成员吗?但似乎 vs 抱怨缺少对依赖 DLL 的引用,所以我需要手动复制它们?
    • 我更新了答案,我希望这可以澄清事情。
    • 这很有帮助。我对此只有一个问题:最后,您说“只需添加对项目 C 的 A 的 nuget 的引用”。这意味着只需在项目 C 中安装 nuget A 并使用 nuget?我的情况就像 B 中的函数使用 A 中的类型的参数。所以在 C 中我需要引用类型,我需要导入 A 这样做吗?
    • 是的,没错。如果 B 使用 A 中声明的参数类型,则还需要导入 A。
    猜你喜欢
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多