0

突然间,当我从 Ninject 获取一个类的实例时,我得到了 FileLoadException。

确切的例外情况如下:

System.IO.FileLoadException: “无法加载文件或程序集‘Quartz, Version=2.3.3.0, Culture=neutral, PublicKeyToken=f6b8c98a402cc8a4’或其依赖项之一。定位程序集的清单定义与程序集引用不匹配。(异常来自 HRESULT:0x80131040)"

阅读错误消息时,似乎很清楚它尝试加载版本为 2.3.3.0 的 Quartz 程序集,但指定的版本是另一个版本……但我不明白为什么它甚至加载版本 2.3.3.0。

我在整个解决方案(包括 .csproj)中搜索了 Quartz 参考资料,并且每个参考资料都说明了 v1.0.1.2。我已经在文件系统上搜索 Quartz.dlls 的路径,但只能找到 1.0.1.2 版本的 dll,所以我不明白为什么它会尝试加载 2.3.3.0。

您知道我可以尝试解决此异常的任何步骤吗?

提前致谢

4

2 回答 2

0

当您安装依赖于 Quartz 的其他一些 nuget 包(如 Quartz.Unity)时,就会发生这种情况。在安装其他软件包时,如果您选择“最低”选项作为依赖项,那么它将把 Quartz 2.3.3.0 设置为依赖项。但是,您的软件包中安装了 Quartz 2.4.1。所以你得到了错误。

解决方案:如果您在项目中安装了最高版本,则在安装该其他软件包时,请选择“最高”选项作为依赖项。

于 2016-10-18T07:22:10.903 回答
0

检查包含 Quartz 的类库。确保平台版本一致。您可以通过右键单击项目文件并选择属性来执行此操作。然后在第一个/最顶部的选项卡中检查程序集版本。

无论您在该类库中拥有什么平台版本,都应该与解决方案中的其他项目保持一致。

于 2015-08-31T12:19:38.480 回答