다음을 통해 공유


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

Visual Studio 편집기에서는 QEQS(Query Edit Query Save) 이벤트를 브로드캐스트할 수 있습니다. Visual Studio 소스 제어 스텁은 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 메서드 구현 시 고려해야 할 사례에는 여러 파일, 특수 파일, 사용자의 취소, 메모리 내 편집이 포함됩니다.