2010-06-04 3 views
0

2010 다음 줄은 비주얼 스튜디오에 대한 개발 추가 기능을 실패하면 :Visual Studio 2010의 addIn 모델에서이 알려진 버그에 대한 대안에 대한 아이디어가 있습니까?

CommandBarEvents handler = (EnvDTE.CommandBarEvents)m_VSStudio.DTE.Events.get_CommandBarEvents(popup); 

업데이트 : m_VSStudio이 유형의 팝업은 유형 (유형은 CommandBarPopup이다 DTE2

되었는지 확인하는 잊어 버렸 CommandBarControl를)하지만 작동

라인이 예외와 함께 실패합니다

System.Runtime.InteropServices.COMException (0x80020003): Member not found. (Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND)) 

Visual Studio 2008에서 똑같은 라인이 작동했습니다.

라인의 목적은 팝업을 클릭 할 때 clickevent를 처리하는 핸들러를 얻는 것입니다. 해결 방법이 있기 때문에 basicly, 그것은 고정되지 않습니다 알려진 버그이라고 주장 http://connect.microsoft.com/VisualStudio/feedback/details/524335/events-get-commandbarevents-exception-on-submenus-reproducible-bug-addin

:

은 솜 검색 후 나는이 링크를 발견했다. 그러나 불행하게도 그것은 해결 :(사람이 해결 방법에 대한 좋은 아이디어가있는 경우

나는 매우 기쁘게 것을 명시하지 않는 이유는 무엇입니까?

내가 클릭 이벤트를 수신 할 이유입니다 내가 보여주고 싶은 때문에 하나는 메뉴 (은 CommandBarPopup)를 클릭 할 때 또는 일부 조건이 주어진 submenuitems (CommandBarControl)를 숨 깁니다.

그래서 클릭 이벤트보다는 다른 것을 사용하는 해결 방법도 감상 할 수있다.

답변

1

Jesper와 나는 이것을 이메일로 말했습니다. 그가 한 일은 자신이 만든 팝업 메뉴의 멤버가 표시되기 바로 전에 적절한 상태에 있는지 확인하는 것입니다. 그는 CommandBarPopup (2010 년 WPF 로의 이전에서 사용되지 않음)에서 Click을 사용하여 상태를 업데이트해야 할시기를 알 수있었습니다. 나는 (2008 년조차도) 자신의 AddIn 클래스에 IDtCommandtarget을 구현하는 것이 좋을 것이라고 언급했다. VS 쉘은 명령 상태를 찾아야 할 때이 메서드를 호출합니다. 이 메서드는 모든 '보통'시간에 호출되어 명령 상태를 업데이트합니다 (즉, 필요한 경우 유휴 상태, 메뉴를 표시하기 직전 등). 이 방법으로 이동하는 것은 그의 시나리오에서 효과가 있으며 문제를 해결하는 것으로 보입니다.

라이언

+0

나는 내 문제에서 해결책이 발견 된 것을 매우 기쁘게 생각합니다. Ryan이 나에게 말하기 전에 IDtCommandTarget을 알지 못했습니다. 필자는 IDtCommandTarget 인터페이스가 Connect 클래스에서 설정되어야한다는 점을 우아하게 생각하지 못합니다. 그것은 별도의 클래스로 인수 분해 수 있다면 청소기 것입니다. Ryan이 나에게 그것이 다른 결점들 중 하나라고 말했지만,이 의미에서 필자는 구식 get_CommandBarEvents 접근법을 선호했다. –

0

그것은 불행한 일이다 그 문구 '우리 전자 메일 대응책'과 '해결 방법을 찾았습니다'는 게시판에 넣었습니다. 어떤 일이 일어 났는지 알려주지 않는 버그. 나는 그 사람이 너와 아주 다른 일을하려고 시도한 것 같아. (그가 동일한 이벤트 메커니즘을 사용한다고해도) 우리는 그가 필요한 것을 할 수있는 더 좋은 방법을 찾았을 것이다. 나는 네가하고있는 일을하는 쉬운 방법을 생각할 수 없다. 내가 네가하는 일을 왜하려고했는지 이해한다면 (즉, 네 자신의 명령을 숨기고 있는가? 다른 사람들의 명령? 무슨 목적으로?) 아마도 우리는 무언가를 생각할 수있을 것입니다. 필자에게 직접 메일을 보내주십시오. 주소는 rmolden입니다. Microsoft DOT com. 불편을 끼쳐 드려 죄송합니다. 우리는 또한 인터넷 검색 엔진에 의해 모든 시간 동안 캡처 될 수 있도록 우리가 발견 한 모든 작업을 여기에서 확인할 수 있습니다.

+0

날 내가 VS2010 내 프레임 워크 http://managedmenuextension.codeplex.com를 업그레이드하고 를 달성하기 위해 노력하고 무엇에 대해 좀 더 설명하게하고,이 프레임 워크에 나는 사람들이 메뉴를 추가 할 수 있습니다 솔루션 탐색기의 다양한 수준, 즉 솔루션, 프로젝트, 항목 등에서 Visual Studio로 또한 항목 이름이 특정 정규식 뒤에 오는 경우에만 항목에 메뉴를 표시 할 수 있습니다. 예를 들어 메뉴가 XML 파일에만 표시되거나 Designer.cs 파일에만 표시된다는 것을 의미합니다.이 마지막 비트에는 언급 된 기능이 필요합니다. 당신이 도울 수 있기를 바랍니다. –