2011-12-14 2 views
2

Ninject (v2.2.1.4)의 최신 버전을 설치하기 위해 NuGet을 사용했습니다.소스가 없습니다. 디버깅 코드를 실행할 때 Ninject와 함께 오류가 발생했습니다.

나는 다음

내 자신의 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<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의 applcation 시작에서 종속성 해결 프로그램 등록 :

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

왜 기본 종속성 해결 프로그램을 바꾸시겠습니까? 당신의 추론은 무엇입니까? 당신은 Ninject.MVC3가하지는 않지만 유지 보수가 덜한 방법으로 아무것도하지 않는 것처럼 보입니다. Ninject를 통해 Ninject.MVC3를 설치하고 NinjectMVC3.cs 파일을 구성하는 것만으로 Nigject를 통해 Ninject를 쉽게 업데이트 할 수 있으며 global.asax를 조작하거나 사용자 정의 종속성 해결 프로그램을 유지 관리 할 필요가 없습니다. –

+0

@MystereMan .SetResolver() 메서드를 호출하여 수집 한 내용에서 기본 종속성 해결 프로그램을 바꾸는 대신 ninject를 사용하여 내 자신의 종속성 해결 프로그램을 추가하고 있습니다. 구현 한 GetService() 메서드가 종속성을 해결할 수없는 경우 null을 반환하고 기본 구현으로 돌아갑니다. – Dangerous

+0

@MystereMan 그리고 Ninject에서 Ninject를 사용하고 Ninject.MVC3을 사용하지 않는 이유는 간단합니다 - Pro ASP.NET MVC3 Framework에서 ninject를 추가하는 방법을 따랐으며 Ninject.MVC3 패키지에 대한 언급이 없었습니다. 그것이 존재했다는 것을 깨닫지 못한다.나는 원래의 구현을 제거하고 제안을 위해이 새로운 것으로 전환했다. 그러나 여전히이 오류가 발생하여 내 질문은 여전히 ​​의미합니다. – Dangerous

답변

4

Visual Studio에서 Ninject의 소스 코드를 찾을 수 없기 때문에 이러한 현상이 발생합니다.

다음 중 하나를 수행합니다

  • 그것을
  • 구성 VS 3.0.0-RC3 이상 만 Ninject에 대한 기호 서버 (AS symbolsource.org를 사용하는에 VS 해당하는 소스 코드와 포인트를 다운로드)
  • 의 모든 Ninject에의 PDB의
  • 안 debuging을 삭제 다른 다음 VS 설정에서 코드 (도구/옵션/디버깅/사용 내 코드 만)

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

+0

나는 당신의 제안을 따랐지만 작동시키지 못했습니다. 나는 또한 다음 링크 (http://stackoverflow.com/questions/2806993/no-source-available)에 대한 제안을 따라 갔지만 아직도 운이 없다. – Dangerous

+1

이것은 Ninject와 관련된 문제는 아니지만 Visual Studio의 잘못된 사용법입니다. 따라서 Visual Studio에서 타사 라이브러리의 디버깅을 사용하지 않도록 설정하는 방법에 대한 질문을하는 것이 좋습니다. 나에게 항상 위에서 언급 한 옵션을 확인하거나 요청한 파일을 열려고 노력했다. 아마도 Ninject pdbs를 삭제하면 트릭을 수행 할 것입니다. –

+0

나는 이것이 문제가 아니라 문제가 아니라는 것을 깨달았지만 도움을 주셔서 감사합니다. – Dangerous

1

기호를 게시하려면 패키지 관리자에게 문의해야합니다. SymbolSource 통해. 그런 다음 Ninject 소스에로드하고 단계를 수행 할 수 있습니다.

관련 문제