2016-07-07 3 views
1

확장 기능을 작성하는 데 익숙하지 않으며 원사 3 개를 풀어주는 것과 같은 주제에 대한 정보를 찾을 수 있습니다. 나는 MSDN 사이트에서 꽤 많은 것을 읽었으며 실패한 구글 검색을 많이했다.단일 언어 용 중복 Visual Studio Extension

내 목표는 타사에서 만든 언어에 대한 지원을 향상시키기 위해 MEF 및 MPF를 사용하여 Visual Studio 확장 프로그램을 작성하는 것입니다. 타사에는 이미 VS 확장이 있으며 디버그는 물론 최소 Intellisense를 지원하고 색을 제공합니다. 디버그 지원을 잃고 싶지는 않지만 경험의 다른면을 개선하고 싶습니다.

내 이해에 따라 특정 언어 (콘텐츠 유형)는 MEF (colorizing, intellisense 등)를 통해 하나의 LanguageService 및/또는 Editor 서비스 집합에서만 지원할 수 있습니다. 이 올바른지? 기존 Intellisense를 대체하고 다른 기능을 추가 할 수 있습니까?

+0

사이드 노트 : VS 확장 기능을 사용할 때 좋은 닷 컴 디 컴파일러 (dotPeek를 좋아해요)가 가장 친한 친구입니다. VS의 좋은 덩어리는 관리되는 코드로 작성되어 있으며, 여러분이 말하는 제 3 자의 것은 말할 것도없고 더 잘 알려지지 않은 일부 내부 작업을 이해하기 위해 디 컴파일 될 수 있습니다. – Cameron

답변

0

예, 약간의 노력으로 해당 언어 서비스의 등록을 무시하고 동일한 파일 확장명에 등록 할 수 있습니다. 언어 서비스는 디버그 엔진과 거의 독립적입니다 (디자인 타임에 중단 점 배치와 같은 몇 가지 작은 것들이 일부 언어 서비스 객체를 통과하기 때문에 거의 중요하지는 않습니다).

언어 서비스를 완전히 대체하는 것이 좋습니다. 변경하지 않고 소스를 변경하지 않고 코드를 변경하지 않고 코드를 보완하는 것보다 훨씬 간단합니다.

대부분의 등록은 레지스트리의 항목을 통해 바인딩됩니다. HKCU\Software\Microsoft\VisualStudio\14.0_Config\에 있습니다. 이것은 이 아닙니다 MEF 구성 요소에는 해당되지만 MEF 구성 요소는 언어 서비스에 의해 정의 된 내용 유형에 따라 필터링되는 경향이 있으므로 언어 ​​서비스에서 다른 콘텐츠 형식을 정의하고 그것에 물건.

언어 서비스 패키지의 ProvideEditorExtension 속성을 통해 동일한 파일 확장명에 대해 더 높은 우선 순위로 언어 서비스를 등록 할 수 있습니다. 그렇다면 귀하의 언어 서비스에 달려 있습니다. 귀하는 자신의 언어 서비스에 대해 걱정할 필요가 없습니다. 콘텐츠 유형이 자체가 아닌 콘텐츠 유형에 따라 행동하는 한 걱정할 필요가 없습니다.

마지막으로 행운을 빈다.

+0

후속 질문이있는 경우 [vsix] 질문 태그를 매우 자주 찾지 않아서 여기에 의견에 링크를 추가하십시오 ;-) – Cameron

+0

Thanks @Cameron. 지금까지는 MEF 구성 요소를 사용할 때 LanguageService가 전혀 필요하지 않은 것으로 보입니다. 그것들은 중복되는 것처럼 보이고 LanguageService에서 추가 기능을 보지 못했습니다. 그 점에 대해 나는 맞습니까, 아니면 무언가를 놓쳤습니까? 이것은 아마 다른 질문 일 것입니다. 그러나 당신은 제 OP에 대답했습니다. –

+0

맞아요, MEF는 언어 서비스 등록과 직각이지만, 언어 서비스에 필요한 많은 서비스가 MEF 구성 요소 (예 : 구문 강조, 완료)를 통해 제공됩니다. 대부분의 MEF 구성 요소는 특정 콘텐츠 형식 (콘텐츠 형식을 정의하는 언어 서비스)과의 연결 인 특정 콘텐츠 형식으로 등록됩니다. 언어 서비스 자체만으로는별로 효과가 없습니다. 무거운 짐을지는 내용 유형에 연결하는 모든 다른 것입니다. 내 느린 응답 시간에 죄송합니다! – Cameron

관련 문제