次の方法で共有


クエリ編集クエリの保存 (ソース管理 VSPackage)

Visual Studio エディターは、クエリ編集クエリ保存 (QEQS) イベントをブロードキャストできます。 Visual Studio ソース管理スタブは、QEQS イベントの受信者になるように QEQS サービスを実装します。 これらのイベントは、現在アクティブなソース管理 VSPackage に委任されます。 アクティブなソース管理 VSPackage は、 IVsQueryEditQuerySave2 とそのメソッドを実装します。 IVsQueryEditQuerySave2 インターフェイスのメソッドは、通常、ドキュメントが初めて編集される直前と、ドキュメントが保存される直前に呼び出されます。

QueryEditQuerySave イベント

ソース管理 VSPackage は、 IVsQueryEditQuerySave2 インターフェイスと必要なメソッドを実装することによって QEQS イベントを処理する必要があります。 VSPackage が少なくとも実装する必要がある 2 つのメソッドの簡単な説明を次に示します。 実際の実装は、ソース管理モデルのロジックに従っている必要があります。

QueryEditFiles メソッド

QueryEditFilesは、プロジェクトまたはエディターがファイルを変更するときに呼び出されます。 このメソッドは、ファイルが変更される と、ファイルが保存される前に呼び出されるのが理想的です。 呼び出されると、 IVsQueryEditQuerySave2::QueryEditFiles メソッドは、指定されたファイルがソース管理下にあるかどうか、チェックアウトする必要があるかどうか、および再読み込みできるかどうかを確認します。 状況によってファイルが編集できない場合、 IVsQueryEditQuerySave2::QueryEditFiles メソッドは、呼び出し元のプログラムに編集を取り消すよう指示します。 呼び出し元が呼び出しモードを指定することもできます。 "サイレント" モードでは、このメソッドは UI が表示されない場合にのみアクションを実行します。 UI が避けられない場合は、問題を示すフラグを返す必要があります。

メソッドはトランザクション方式で動作します。つまり、1 つのファイルで編集が取り消されると、すべてのファイルの編集が取り消されます。 逆に、編集が許可されている場合は、すべてのファイルに対して編集が許可されます。 このメソッドで特定のファイル セットに対して 1 回編集できる場合は、常に同じファイル セットの後続の呼び出しで編集を許可する必要があります。 allow-edit ループは、ファイルが閉じられ、保存され、再読み込みされるまで続行されます。属性 (プロパティ) が変更されるまでまたは、ソース管理パッケージが変更されるまで。 IVsQueryEditQuerySave2::QueryEditFilesメソッドの実装で考慮すべきケースには、複数のファイル、特殊なファイル、ユーザーからのキャンセル、メモリ内の編集が含まれます。

QuerySaveFiles メソッド

QuerySaveFilesは、プロジェクトまたはエディターが一連のファイルを保存する必要があるときに呼び出されます。 呼び出されると、 IVsQueryEditQuerySave2::QuerySaveFiles メソッドは、指定されたファイルが読み取り専用かどうか、およびソース管理下にあるかどうかを確認します。 ファイルをチェックアウトする必要がある場合、呼び出しはソース管理パッケージに委任されます。 状況によってファイルが保存されない場合、 IVsQueryEditQuerySave2::QuerySaveFiles メソッドは保存を取り消すようエディターに指示する必要があります。 IVsQueryEditQuerySave2::QueryEditFiles メソッドと同様に、呼び出し元は呼び出しモードを指定できます。 "サイレント" モードでは、このメソッドは UI が表示されない場合にのみアクションを実行します。 UI が避けられない場合は、問題を示すフラグを返す必要があります。

このメソッドはトランザクション方式で動作する必要があります。つまり、1 つのファイルで保存が取り消されると、すべてのファイルの保存が取り消されます。 逆に、保存が許可されている場合は、すべてのファイルに対して保存を許可する必要があります。 IVsQueryEditQuerySave2::QueryEditFiles メソッドと同様に、IVsQueryEditQuerySave2::QuerySaveFiles メソッドの実装を検討する場合には、複数のファイル、特殊なファイル、ユーザーからのキャンセル、およびメモリ内の編集が含まれます。