Нет источника с ошибкой Ninject при отладке кода - PullRequest
2 голосов
/ 14 декабря 2011

Я использовал NuGet для установки последней версии Ninject (v2.2.1.4).

Затем я создал свой собственный NinjectDependencyResolver (кредит Адам Фриман и Стив Сандерсон ):

public class NinjectDependencyResolver : IDependencyResolver
{
    private IKernel kernel;

    public NinjectDependencyResolver()
    {
        kernel = new StandardKernel();
        AddBindings();
    }

    public object GetService(Type serviceType)
    {
        return kernel.TryGet(serviceType);
    }

    public IEnumerable<object> GetServices(Type serviceType) {
        return kernel.GetAll(serviceType);
    }

    public IBindingToSyntax<T> Bind<T>()
    {
        return kernel.Bind<T>();
    }

    public IKernel Kernel
    {
         get { return kernel; }
    }

    private void AddBindings()
    {
        kernel.Bind<ITitleRepository>().To<TitleRepository>();
        kernel.Bind<IDayRepository>().To<DayRepository>();
        kernel.Bind<IMonthRepository>().To<MonthRepository>();
    }
}

И затем зарегистрировал средство разрешения зависимостей в запуске приложения global.asax:

    protected void Application_Start()
    {
        //...other code

        DependencyResolver.SetResolver(new NinjectDependencyResolver());
    }

Затем в моем коде есть следующая строка:

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

Если я запускаю код в режиме отладки, он выглядит корректно , однако, если я войду в этот код (построчно), то когда он запускает kernel.TryGet (serviceType), следующая ошибкапроисходит:

Источник недоступен

Надеемся, что изображение будет видно?

enter image description here

Кто-нибудь знает, почему это может происходить?

Ответы [ 2 ]

4 голосов
/ 14 декабря 2011

Это происходит потому, что Visual Studio не находит исходный код для Ninject.

Выполните одно из следующих действий:

  • Загрузите соответствующий исходный код и укажите на него VS
  • Настройте VS для использования symbolsource.org в качестве сервера символов (только дляNinject 3.0.0-rc3 и более поздних версий)
  • Удалить все файлы pdb Ninject
  • Отключить отладку другого кода, кроме вашего, в настройках VS (Инструменты / Параметры / Отладка / Включить только мой код)

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

1 голос
/ 15 декабря 2011

Вы должны попросить сопровождающих пакета опубликовать символы, например, через SymbolSource .Тогда вы сможете загрузить их и перейти к источнику Ninject.

...