【问题标题】:Azure Emulator loading incorrect librariesAzure 模拟器加载不正确的库
【发布时间】:2013-10-01 12:56:11
【问题描述】:

情况如下:

假设我有一个项目,其中包含 2 个 nuget 库引用 - 库 A 和 B:

  • A 版本为 1.5
  • 但 B 引用了旧版本的 A,例如1.4

在 VS 中,一切都可以正常编译和运行(我猜是因为 A 1.5 实现了 1.4 所需的所有功能)。

但是在 Azure 模拟器中运行导致立即 TypeLoadException,大概是因为加载了旧版本的 A(我认为是因为首先加载了 B,并且它的依赖项是 A 1.4),因此类型和方法(例如 MyObject ) 在 A 1.5 中添加并被我的项目使用的无法识别。

我得到的正是: “无法从程序集 'A,Version=1.4,Culture=neutral,PublicKeyToken=null' 加载类型 'MyObject'。” 当然,我已经用 A 和 1.4 替换了真实姓名和版本号 :)

我知道一种解决方案是将 B 更新为使用 A 1.5,但是还有其他方法可以解决这个问题吗?如果有其他使用 A 1.4 的库 B、C、D、E...,我会更新所有这些库中对 A 的引用...

感谢您的帮助

【问题讨论】:

    标签: azure version emulation nuget


    【解决方案1】:

    升级您的项目以使用最新的 NuGet 包或尝试将binding redirect 添加到您的 app.config 以将程序集引用映射到更高版本。

    【讨论】:

    • 嘿,马特。谢谢你的建议。我已经对其进行了研究,看起来新的 VS 将提供“自动绑定重定向”,它应该通过“始终加载最新版本的 dll”来解决问题。但是,我发现了一些有用的东西:转到解决方案的“packages”文件夹并删除属于其他 nuget 包的所有 dll 并被项目引用(这将防止任何挥之不去的旧版本 dll)
    猜你喜欢
    • 1970-01-01
    • 2011-04-02
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    相关资源
    最近更新 更多