【发布时间】:2026-01-11 15:35:01
【问题描述】:
我对 ninject 还很陌生,我只是在学习一些教程并将代码添加到我的 asp.net mvc 4 项目中,然后我注意到 ninject 找不到任何自身的来源。它一直问我所有源文件的位置。我不确定发生了什么。
编辑:即使我安装了 mvc 3 ninject 包,我仍然遇到同样的问题。它会打开一个文件对话框,让我选择 ninject 的类文件所在的位置。
已安装项目:
- Ninject - ioC 容器
- Ninject - Ninject.Web.Common
我的 NinjectDependencyResolver 类:
public class NinjectDependencyResolver : System.Web.Mvc.IDependencyResolver
{
private IKernel kernel;
public NinjectDependencyResolver()
{
kernel = new StandardKernel();
AddBindings();
}
public void Dispose()
{
throw new NotImplementedException();
}
public object GetService(Type serviceType)
{
return kernel.TryGet(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return kernel.GetAll(serviceType);
}
public IDependencyScope BeginScope()
{
throw new NotImplementedException();
}
private void AddBindings()
{
kernel.Bind<IEmail>().To<Classes.Email.MockEmail>();
}
}
Application_Start:
//Ninject
DependencyResolver.SetResolver(new NinjectDependencyResolver());
来源搜索信息(错误):
查找来源 'c:\Projects\Ninject\ninject\src\Ninject\Syntax\BindingRoot.cs'。 校验和:MD5 {25 92 2 2e 84 42 6d 8a d5 64 6 3a 18 a8 75 cf} 文件 'c:\Projects\Ninject\ninject\src\Ninject\Syntax\BindingRoot.cs' 确实 不存在。在脚本文档中查找 'c:\Projects\Ninject\ninject\src\Ninject\Syntax\BindingRoot.cs'... 在项目中寻找 'c:\Projects\Ninject\ninject\src\Ninject\Syntax\BindingRoot.cs'。这 在项目中找不到文件。查看目录'C:\ Program 文件 (x86)\Microsoft Visual Studio 12.0\VC\crt\src\'... 查看 目录 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\crt\src\vccorlib\'... 查看目录 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\src\mfc\'... 查看 目录 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\src\atl\'... 查看目录 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include'... 调试 活动解决方案的源文件设置表明 调试器不会要求用户查找文件: c:\Projects\Ninject\ninject\src\Ninject\Syntax\BindingRoot.cs。这 调试器找不到源文件 'c:\Projects\Ninject\ninject\src\Ninject\Syntax\BindingRoot.cs'。
在我的一个控制器中,我有这个:
IEmail Email = new Email();
Email.SendEmail("", "", "", true);
所以 ninject 应该将新的电子邮件更改为新的 MockEmail,但它没有。
【问题讨论】:
-
@hutchonoid 即使我为 mvc 3 安装该软件包,我仍然遇到同样的问题。
-
什么是消息/异常+消息/堆栈跟踪?
-
如果你将包安装为 Install-package Ninject.MVC3,你应该有一个 Ninject.MVC3 包。是这样吗?
-
你想做什么? Ninject 是否抛出异常并抱怨找不到源代码文件以进行调试?我不确定 Ninject 包是否包含 pdb 文件。
-
@hutchonoid 是的,我有这个包,安装总是成功的。解雇,它没有抛出任何异常,只是打开一个文件对话框来选择一个 ninject 的类文件。我很确定该软件包已包含让 ninject 工作的所有内容?
标签: c# asp.net asp.net-mvc dependency-injection ninject