调试代码时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源代码。