【问题标题】:An exception of type 'System.IO.FileLoadException' occurred in Ninject.dll but was not handled in user codeNinject.dll 中出现“System.IO.FileLoadException”类型的异常,但未在用户代码中处理
【发布时间】:2014-07-02 16:52:46
【问题描述】:

我正在关注 Adam Freeman 的 Pro ASP.Net MVC5 书籍。我已经按照第 7 章创建了 sportsStore 项目。在创建项目模板并添加引用之后,我构建了项目并尝试对其进行调试。我得到这个弹出框

如果我点击取消,我会得到问题中提到的异常。我无法弄清楚这一点。任何建议

点击取消时出现上述错误。

这里是异常的调用栈——

Ninject.dll!Ninject.Modules.AssemblyNameRetriever.GetAssemblyNames(System.Collections.Generic.IEnumerable<string> filenames, System.Predicate<System.Reflection.Assembly> filter) Line 54   C#
Ninject.dll!Ninject.Modules.CompiledModuleLoaderPlugin.LoadModules(System.Collections.Generic.IEnumerable<string> filenames) Line 81    C#
Ninject.dll!Ninject.Modules.ModuleLoader.LoadModules(System.Collections.Generic.IEnumerable<string> patterns) Line 54   C#
Ninject.dll!Ninject.KernelBase.Load(System.Collections.Generic.IEnumerable<string> filePatterns) Line 237   C#
Ninject.dll!Ninject.KernelBase.KernelBase(Ninject.Components.IComponentContainer components, Ninject.INinjectSettings settings, Ninject.Modules.INinjectModule[] modules) Line 100  C#
Ninject.dll!Ninject.KernelBase.KernelBase(Ninject.Modules.INinjectModule[] modules) Line 60 C#
Ninject.dll!Ninject.StandardKernel.StandardKernel(Ninject.Modules.INinjectModule[] modules) Line 48 C#

SportsStore.WebUI.dll!SportsStore.WebUI.App_Start.NinjectWebCommon.CreateKernel() 第 38 行 C# Ninject.Web.Common.dll!Ninject.Web.Common.Bootstrapper.Initialize(System.Func createKernelCallback) 第 50 行 C# SportsStore.WebUI.dll!SportsStore.WebUI.App_Start.NinjectWebCommon.Start() 第 23 行 C# [外部代码] . 我知道 AssemblyNameRetriever 类丢失了,我确实尝试通过从 github 下载并使用该类来修复它。但它再次给出了一些例外。 Ninject 不应该自己处理这个类。

【问题讨论】:

  • 您能否发布您从异常中获得的其他信息?
  • 这可能会有所帮助,但可能不会:按 Ctrl+Alt+E,在“通用语言运行时异常”下选择“抛出”。这可能有助于您查明错误。

标签: c# asp.net-mvc asp.net-mvc-4 visual-studio-2013


【解决方案1】:

查看您的异常,您正在尝试加载 Mvc 版本 3.0.0.0。您当前正在运行不同的 Mvc 版本。

如果您有依赖于旧 Mvc 版本的项目的源代码,您可以尝试使用新版本重新编译它们。您还可以尝试弄乱依赖项以全面获得正确的版本。

还有一个code project 页面,上面有一个类似情况的人。 The author writes:

查看发送给我的代码 pes1957 后,我能够确定确实存在程序集引用错误。

基本上,解决方案中的项目数量混合了版本 5 和 6 实体框架引用。我更新了引用和 web.config 以显示正确的版本号并且所有编译都正确。

【讨论】:

  • 在添加对我的项目的引用时,我添加了 System.Web.Mvc 版本 4.0.0.0。我不明白为什么加载时需要 3.0.0.0
  • 它必须是需要旧版本的另一个程序集(Ninject)。您可以尝试找到要使用的程序集的更新版本。
  • 我已经通过 Nuget 包管理器安装了以下包: 1. Ninject - 版本没有显示在包管理器中。只有一个名为 Ninject 的软件包,我已经安装了它。 2. Ninject.Web.Common - 与 Ninject 相同。没有提到版本。只列出了一个包。 3.忍者.MVC5。现在这应该与 MVC5 兼容。我不知道这三个中的哪个包引起了麻烦。其中之一是尝试加载 System.Web.Mvc 3.0.0.0
【解决方案2】:

我的项目中也出现了同样的问题。似乎从 nuget 包安装 NInject 作为第一个导致 Ninject 库需要 System.Web.MVC v3。从nuget包管理器中卸载所有Ninject库并添加NInject.MVC5包作为第一个也是唯一的包后,问题就解决了。

【讨论】:

    【解决方案3】:

    我遇到了这个问题,结果我的 MVC Web 项目引用了另一个 MVC Web API 项目,Ninject 错误来自 Web API 项目。就我而言,我删除了引用以保持简单。

    【讨论】:

      猜你喜欢
      • 2014-06-03
      • 1970-01-01
      • 2018-03-31
      • 2016-02-13
      • 2018-10-25
      • 2016-09-21
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多