방법: 서비스 문제 해결
서비스를 얻는 몇 가지 일반적인 문제는 있습니다.
서비스에 등록 되지 않은 Visual Studio.
서비스 인터페이스 형식 및 않는 서비스 종류를 요청 했습니다.
서비스를 요청 하 여 VSPackage 배치 된지 않습니다.
잘못 된 서비스 공급자가 사용 됩니다.
요청 된 서비스를 얻을 수 없습니다 경우, 호출을 GetService 는 null을 반환 합니다. 서비스를 요청한 후에 null을 항상 테스트 해야 합니다.
Dim log As IVsActivityLog = TryCast(GetService(GetType(SVsActivityLog)), IVsActivityLog)
If log Is Nothing Then
Return
End If
IVsActivityLog log = GetService(typeof(SVsActivityLog)) as IVsActivityLog;
if (log == null) return;
서비스 문제를 해결 하려면
서비스가 제대로 등록 되었는지 여부를 확인 하려면 시스템 레지스트리를 검사 합니다. 자세한 내용은 서비스 등록를 참조하십시오.
Getservice를 호출할 때 서비스 종류 및 인터페이스 형식을 사용 합니다. 서비스를 요청할 때 Visual Studio, Package GUID 형식에서 압축을 풉니다. 다음 조건에 해당 하는 경우 서비스를 찾을 수 없습니다.
인터페이스 형식은 서비스 형식 대신 Getservice에 전달 됩니다.
없는 GUID 인터페이스에 명시적으로 할당 됩니다. 따라서 필요에 따라 개체에 대 한 GUID 기본 시스템을 만듭니다.
서비스를 요청 하 여 VSPackage 배치 된 확인 해야 합니다. Visual Studio후이 구성 하 고 호출 하기 전에 VSPackage 사이트 Initialize.
서비스에 필요한 VSPackage 생성자에서 코드가 있으면 Initialize 메서드를 이동 합니다.
올바른 서비스 공급자를 사용 하 고 있어야 합니다.
모든 서비스 공급자 모두에 게 있습니다. 서비스 공급자는 Visual Studio 가공 도구 창에 다가 있는 Vspackage를 전달 하는 것을. 도구 창 서비스 공급자에 대 한 알고 STrackSelection에 대 한 모르지만 SVsRunningDocumentTable. 호출할 수 있는 GetGlobalService 내에서 도구 창을 VSPackage 서비스 공급자 로부터 얻을 수 있습니다. 자세한 내용은 방법: Getglobalservice를 사용 합니다.을 참조하십시오.
사용자 정의 컨트롤 또는 컨트롤 컨테이너 도구 창의 호스트 하는 경우 컨테이너 Windows 구성 요소 모델에 배치 됩니다 및 액세스 하지 않은 Visual Studio 서비스 합니다. 호출할 수 있는 GetGlobalService 는 컨트롤 컨테이너에서 VSPackage 서비스 공급자 로부터 얻을 수 있습니다. 자세한 내용은 방법: Getglobalservice를 사용 합니다.을 참조하십시오.