3

사용자 지정 프로젝트 형식과 연결된 사용자 지정 프로젝트 템플릿을 만들었습니다. 해결책은 크게 MPF for Projects - Visual Studio 2012 framework에 달려 있습니다.프로그래밍 방식으로 빌드 및 실행 작업을 무시하는 방법?

다음은이 기본 사용자 정의 프로젝트 유형에 대해 기본 "빌드"(F6) 및 "디버깅하지 않고 시작"(ctrl + F6) 이벤트 을 재정의하는 것입니다. 솔루션 자체는 VSIX 패키지로 배포됩니다.

도움을 주시면 감사하겠습니다.

+0

그 키로 대신 무엇을할까요? 자신이 원하는 것을 정규 경로에 통합 할 수있는 방법이있을 수 있습니다. –

+0

@JasonMalinowski 프로젝트에 추가 된 파일 유형에 따라 일부 사용자 지정 논리와 함께 외부 컴파일러를 사용하려고합니다. – Dante

+0

VS 프로젝트 형식 대신 msbuild를 통해 해당 사용자 지정을 수행해야합니까? 사용자가 명령 줄 또는 좋아하는 연속 통합 빌드 프로세스에서 빌드하면 어떻게 될 것으로 예상합니까? –

답변

8

VSPackage의 Visual Studio UI에서 오는 명령을 차단할 수 있습니다. 이렇게하려면 원하는 이벤트 인 DTE.Events.CommandEvents에 가입해야합니다. CommandEvents에 GUID와 Id를 전달해야합니다.

private void Initialize() 
{ 
    var dte = GetService(typeof(SDTE)) as EnvDTE.DTE; 
    _startCommandEvents = dte.Events.CommandEvents["{5EFC7975-14BC-11CF-9B2B-00AA00573819}", 295]; 
    _startCommandEvents.BeforeExecute += OnLeaveBreakMode; 
} 

private void OnBeforeStartCommand(string guid, int id, object customIn, object customOut, ref bool cancelDefault) 
{ 
    //your event handler this command 
} 

귀하의 이벤트 핸들러는 따라서 자신에 의해 VS 동작을 대체하는 VS 명령을 취소 cancelDefault 진실한 전달, ref bool cancelDefault 매개 변수가 있습니다.

GUID 및 Id 명령을 얻으려면 VSIP 로깅 기능을 사용할 수 있습니다. 이 기능을 사용하려면 레지스트리 키 값 설정 :

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\<version>\General] "EnableVSIPLogging"=dword:00000001 

을 및 Visual Studio IDE를 다시 시작합니다. Ctrl 키 Shift 키를 사용하여 다음, 메뉴 항목을 클릭하면 메시지가 다음과 같이 얻을 것이다 : 메시지에서

Guid and Id command

가이 드와 CmdID이 CommandEvents에 대한 필수 매개 변수입니다.

새 언어 (새 유형의 프로젝트 만들기)을 구현하는 경우 사용자 지정 디버그 엔진과 MSBuild 통합을 추가하는 것이 더 정확합니다. 이러한 구현 예는 IronPython 또는 Nemerle 프로젝트에서 볼 수 있습니다.