2014-12-05 6 views
1

여기 누군가가 나를 도울 수 있기를 바랬습니다. 저는 경험 많은 프로그래머가 아니지만 프로젝트를 진행하고 있습니다.VSPackage MenuCommand에 인수/스위치/매개 변수를 전달할 수 있습니까?

Visual Studio와 프로그래밍 방식으로 상호 작용할 필요가 있습니다. EnvDTE Interop 항목을 사용하여 성공한 적이 있지만 VS 내부에서 수행해야하는 작업이 있으므로 VSPackage MenuCommand를 사용하여 다양한 작업을 수행하려고합니다. 애매 모호한.

현재 VSPackage 확장을 사용하여 사용자 지정 MenuCommand를 성공적으로 만들고 있으며 DTE를 사용하는 다른 응용 프로그램에서 해당 MenuCommand를 프로그래밍 방식으로 트리거 할 수 있습니다.

내가 궁금해하는 것은 : 트리거 할 수있는 외부 응용 프로그램에서 인수를 전달할 수있는 MenuCommand를 정의 할 수 있습니까? 메뉴 명령 옵션을 사용하여 비주얼 스튜디오 2012 년 VS 패키지 템플릿을 사용하여

는, 내 모든 코드는이 방법 안에 살고 :

private void MenuItemCallback(object sender, EventArgs e) 
    { 
     // my code... 
    } 

이 모두 함께 분명 다른 자동 생성 된 코드의 배관이 많이있다, 그러나 모든 MY 코드는이 메소드에 있습니다. 매개 변수를 전달할 수 있도록이 메서드를 변경하는 방법이 있습니까? 다른 기능을하는 방법을 선언하면/등록 할 때 다른 파일에 어떤 변경을해야합니까? (가능한 경우)? 예를 들어

:

static void Main(string[] args)  
{ 
    Type visualStudioType = Type.GetTypeFromProgID("VisualStudio.DTE.11.0"); 
    DTE dte = Activator.CreateInstance(visualStudioType) as DTE; 
    dte.MainWindow.Visible = true; 
    dte.ExecuteCommand("myCommand");   
} 

이 작동합니다. 내가 이런 일을하려고하면

dte.ExecuteCommand("myCommand", "myArguments"); 

, 나는 다음과 같은 예외가 나타납니다 : "명령 \"myCommand \ "인수를 허용하지 않습니다 또는 그러나 내가 뭘하려는에게 마지막 명령을 변경할 수있다 스위치. "

죄송하지만 명확하지 않은 경우 죄송합니다. 어떤 도움이라도 대단히 감사하겠습니다.

+0

나는이 작업을 얻었다. 나는 카를로스 퀸 테로에게 정말로 감사 드린다. 그것이 내 문제를 직접적으로 해결하지는 못했지만 결국 내가해야 할 일을 찾아 낼 수있었습니다. 아직 완전히 이해하지 못했지만 대부분 OleMenuCommand 대신 MenuCommand로 명령을 자동 생성하는 템플릿과 관련이 있습니다.OleMenuCommand로 변경하고 OleMenuCmdEventArgs로 EventArgs를 캐스팅 한 후 명령으로 전달한 매개 변수를 보유하고있는 InValue에 액세스 할 수 있습니다. 후자! –

답변

0

추가 기능에서 생성 된 명령은 기본적으로 매개 변수를 허용합니다. 패키지에서 생성

명령은 .vsct 파일에 명령을 정의 할 때 <CommandFlag> AllowParams </CommandFlag >을 지정해야합니다. dte.ExecuteCommand 또는 dte.Commands.Raise을 (사용 중, 작동한다, 그런 다음 매개 변수 https://social.msdn.microsoft.com/Forums/en-US/134983e8-049c-40e1-a212-312fa637698b/iolecomandtargetexec-for-commands-with-parameters?forum=vsx

와 명령에 대한

IOleComandTarget :: 간부 : http://msdn.microsoft.com/en-us/library/bb491716.aspx

을 또한이 스레드를 참조하십시오 참조하십시오. ..). 참조 :

HOWTO : 프로그래밍 패스 매개 변수를 명령에 비주얼 스튜디오에서 추가 된 http://www.visualstudioextensibility.com/articles/add-ins/

+0

답장을 보내 주셔서 감사합니다. 내 질문에 분명히하지 않았다을 추측하지만 매개 변수를 취할 것입니다 같은 방식으로 명령을 정의하는 방법에 더 많은 문제가 있습니다. 마찬가지로 성공적으로 매개 변수를 전달할 수 있지만 MSDN 연습을 사용하여 자체 명령을 정의했으며 매개 변수를 허용하는 명령을 변경하는 방법을 잘 모르겠습니다. 말이 돼? 다시 한번 감사드립니다. 내 말은, –

+0

. 내 대답을 확장했습니다 –

+0

고마워. 당신의 편집은 저에게 그것을 지키고 그것을 해결할 수있는 충분한 정보를주었습니다. –