调试代码时Ninject没有源可用错误

我使用NuGet来安装最新版本的Ninject(v2.2.1.4)。

然后我创建了我自己的NinjectDependencyResolver(归功于Adam Freeman和Steve Sanderson ):

public class NinjectDependencyResolver : IDependencyResolver { private IKernel kernel; public NinjectDependencyResolver() { kernel = new StandardKernel(); AddBindings(); } public object GetService(Type serviceType) { return kernel.TryGet(serviceType); } public IEnumerable GetServices(Type serviceType) { return kernel.GetAll(serviceType); } public IBindingToSyntax Bind() { return kernel.Bind(); } public IKernel Kernel { get { return kernel; } } private void AddBindings() { kernel.Bind().To(); kernel.Bind().To(); kernel.Bind().To(); } } 

然后在global.asax applcation startup中注册依赖项解析器:

  protected void Application_Start() { //...other code DependencyResolver.SetResolver(new NinjectDependencyResolver()); } 

然后我在代码中有以下行:

 ITitleRepository titleRepository = (ITitleRepository)DependencyResolver.Current.GetService(typeof(ITitleRepository)); 

如果我在调试模式下运行代码它似乎正常工作,但是,如果我逐步执行此代码(然后逐行),那么当它运行kernel.TryGet(serviceType)时会发生以下错误:

没有可用的来源

希望图像可见?

在此处输入图像描述

有谁知道为什么会这样?

发生这种情况是因为Visual Studio找不到Ninject的源代码。

执行以下操作之一:

  • 下载相应的源代码并将VS指向它
  • 配置VS使用symbolsource.org作为符号服务器(仅适用于Ninject 3.0.0-rc3及更高版本)
  • 删除所有Ninject pdb
  • 禁用在VS设置中对其他代码进行debuging(工具/选项/调试/启用我的代码)

请参阅http://msdn.microsoft.com/en-us/library/3sehk0fb%28v=vs.100%29.aspx

您应该要求包维护者发布符号,例如通过SymbolSource 。 然后你就可以加载它们并进入Ninject源代码。