다음을 통해 공유


쿼리 편집 쿼리 저장(소스 제어 VSPackage)

Visual Studio 편집기에서는 QEQS(쿼리 편집 쿼리 저장) 이벤트를 브로드캐스트할 수 있습니다. Visual Studio Source Control Stub는 QEQS 서비스를 구현하여 QEQS 이벤트의 수신자가 됩니다. 이러한 이벤트는 현재 활성 소스 제어 VSPackage에 위임됩니다. 활성 소스 제어 VSPackage는 IVsQueryEditQuerySave2와 그 메서드들을 구현한다. 인터페이스의 IVsQueryEditQuerySave2 메서드는 일반적으로 문서를 처음 편집하기 바로 전과 문서를 저장하기 직전에 호출됩니다.

QueryEditQuerySave 이벤트

소스 제어 VSPackage는 인터페이스 및 필요한 메서드를 구현하여 IVsQueryEditQuerySave2 QEQS 이벤트를 처리해야 합니다. 다음은 VSPackage가 최소한 구현해야 하는 두 가지 메서드에 대한 간략한 설명입니다. 실제 구현은 소스 제어 모델의 논리에 따라야 합니다.

QueryEditFiles 메서드

QueryEditFiles 프로젝트 또는 편집기에서 파일을 수정하려고 할 때 호출됩니다. 이상적으로 이 메서드는 파일을 수정 하기 전 과 파일을 저장할 때 호출됩니다. 호출될 때 메서드는 IVsQueryEditQuerySave2::QueryEditFiles 지정된 파일이 소스 제어를 받고 있는지 여부, 체크 아웃해야 하는지 여부 및 다시 로드할 수 있는지 여부를 확인합니다. 상황에서 파일을 편집할 수 없는 경우 메서드는 IVsQueryEditQuerySave2::QueryEditFiles 호출 프로그램에 편집을 취소하도록 지시합니다. 호출자가 호출 모드를 지정할 수도 있습니다. "자동" 모드에서 이 메서드는 UI가 표시되지 않는 경우에만 작업을 수행합니다. UI를 피할 수 없는 경우 문제를 나타내기 위해 플래그를 반환해야 합니다.

메서드는 트랜잭션 방식으로 동작합니다. 즉, 단일 파일에서 편집이 취소되면 모든 파일에 대해 편집이 취소됩니다. 반대로 편집이 허용되는 경우 모든 파일에 대해 허용됩니다. 이 메서드가 지정된 파일 집합에 대해 한 번 편집을 허용하는 경우 항상 동일한 파일 집합에 대한 후속 호출에서 편집을 허용해야 합니다. 허용 편집 루프는 파일이 닫히고 저장되고 다시 로드될 때까지 계속됩니다. 특성(속성)이 변경될 때까지 또는 소스 제어 패키지가 변경될 때까지 메서드를 구현할 IVsQueryEditQuerySave2::QueryEditFiles 때 고려해야 할 사례에는 여러 파일, 특수 파일, 사용자 취소 및 메모리 내 편집이 포함됩니다.

QuerySaveFiles 메서드

QuerySaveFiles 프로젝트 또는 편집기에서 파일 집합을 저장해야 하는 경우 호출됩니다. 호출될 때 메서드는 IVsQueryEditQuerySave2::QuerySaveFiles 지정된 파일이 읽기 전용인지 여부와 소스 제어를 받고 있는지 여부를 확인합니다. 파일을 체크 아웃해야 하는 경우 호출이 소스 제어 패키지에 위임됩니다. 상황에서 파일이 저장되지 않는 경우 메서드는 IVsQueryEditQuerySave2::QuerySaveFiles 편집기에게 저장을 취소하도록 지시해야 합니다. 메서드와 IVsQueryEditQuerySave2::QueryEditFiles 마찬가지로 호출자가 호출 모드를 지정할 수 있습니다. "자동" 모드에서 이 메서드는 UI가 표시되지 않는 경우에만 작업을 수행합니다. UI를 피할 수 없는 경우 문제를 나타내기 위해 플래그를 반환해야 합니다.

이 메서드는 트랜잭션 방식으로 동작해야 합니다. 즉, 단일 파일에서 저장이 취소되면 모든 파일에 대해 저장이 취소됩니다. 반대로, 저장이 허용되는 경우 모든 파일에 대해 허용되어야 합니다. IVsQueryEditQuerySave2::QueryEditFiles 메서드와 마찬가지로, IVsQueryEditQuerySave2::QuerySaveFiles 메서드를 구현할 때 고려해야 할 사례로는 여러 파일, 특수 파일, 사용자의 취소, 메모리 내 편집이 있습니다.