【问题标题】:.Net not finding referenced dependency required by Nuget package.Net 找不到 Nuget 包所需的引用依赖项
【发布时间】:2019-05-15 12:08:04
【问题描述】:

我们最近设置了一个本地 nuget 服务器,以改进我们对项目中依赖项的处理。为了打包和推送我们的库,我们使用 Visual Studio 中的“新”项目格式和一个名为 NuPack-Nuget Packager 的市场插件。

开发的工作流程是创建一个新项目并拉取所需的依赖项。

现在我们在所有工作场所都发现了一种奇怪的行为。

例如。我们有 2 个库:LibA(1.1.0 版)和 LibB(2.5.0 版) 其中 LibB 依赖于 LibA 并将其作为项目引用进行引用。 我的项目通过 Nuget 引用了 LibB(版本 2.5.0)。

当我更改 LibB(现在是 2.5.1 版)并将其推送到我们的 Nuget 并更新我的项目中的引用时,一切似乎都工作正常,项目构建并且没有错误,但是在运行时,一旦执行代码引用 LibA(仍然是 1.1.0 版,未进行任何更改)我收到 FileNotFound 异常:找不到 Assembly LibA,AssemblyVersion 1.1.0。

目前唯一的解决方法是将新的 LibA 打包为 1.1.1 版(无代码更改)并将其推送到 nuget 服务器并将我的项目中的引用更新为 1.1.1 版。

有人知道原因/解决方案吗?

编辑不能解决问题的事情:

  • 清理/重建解决方案(既不是依赖项也不是项目)
  • 更新包 - 在包管理器命令行中重新安装
  • 清除 Nuget 缓存并恢复所有依赖项
  • 手动删除和读取项目中的 nuget 引用

编辑确切的错误消息(程序集名称已更改)

System.IO.FileNotFoundException:'无法加载文件或程序集'Lib.A.Namespace.1.1,版本 = 1.1.7,文化 = 中性,PublicKeyToken = null'。 Das System kann die angegebene Datei nicht finden。'

最后一部分的翻译:“找不到文件”

EDIT所有的依赖都编译为AnyCPU for NetStandard2.0

【问题讨论】:

  • LibB 是否通过项目引用引用 LibA。还是将 LibA 作为 LibB 的 nuget 依赖项安装?
  • LibB 通过项目引用引用 LibA。但是,使用 nuget 引用时错误仍然存​​在。
  • 确切的错误信息是什么?顺便说一句,当引用的库或其任何依赖项被编译为 x86 并且引用的库被编译为 x64 时,我的公司中出现了类似的情况,反之亦然。
  • 您的 nuget 包 LibB(2.5.1 版)是否包含 nuget 依赖项 LibA(1.1.0 版)而不是项目参考?
  • @LeoLiu-MSFT LibB 明确(再次检查)通过项目引用引用 LibA。

标签: c# asp.net-core visual-studio-2017 dependencies nuget


【解决方案1】:

已发现问题。 NuPack-Nuget Packager 在这里“出错”。 对于将来偶然发现此问题的任何人:

我们的问题是 NuPack-Nuget Packager 的工作方式。 虽然工作流程似乎很方便(设置 Assemblyversion、设置输出目录、设置 nuget 服务器、完成),但该项目不会为包部署而构建,因此依赖于先前的构建,该构建在内部仍保留先前的 AssemblyVersion。

在发现我们正在提取过时的引用(在 User/.Nuget/Packages 文件夹中找到)后,我们终于找到了解决方案。

我们还没有为构建、打包和部署提供最终的一步解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 2020-02-18
    相关资源
    最近更新 更多