Método IVsQueryEditQuerySave2.QueryEditFiles (UInt32, Int32, String[], UInt32[], VSQEQS_FILE_ATTRIBUTE_DATA , UInt32, UInt32)
Publicado: abril de 2016
Chamado quando um arquivo está prestes a ser editado.
Namespace: Microsoft.VisualStudio.Shell.Interop
Assembly: Microsoft.VisualStudio.Shell.Interop (em Microsoft.VisualStudio.Shell.Interop.dll)
Sintaxe
int QueryEditFiles(
uint rgfQueryEdit,
int cFiles,
string[] rgpszMkDocuments,
uint[] rgrgf,
VSQEQS_FILE_ATTRIBUTE_DATA[] rgFileInfo,
out uint pfEditVerdict,
out uint prgfMoreInfo
)
int QueryEditFiles(
unsigned int rgfQueryEdit,
int cFiles,
array<String^>^ rgpszMkDocuments,
array<unsigned int>^ rgrgf,
array<VSQEQS_FILE_ATTRIBUTE_DATA>^ rgFileInfo,
[OutAttribute] unsigned int% pfEditVerdict,
[OutAttribute] unsigned int% prgfMoreInfo
)
abstract QueryEditFiles :
rgfQueryEdit:uint32 *
cFiles:int *
rgpszMkDocuments:string[] *
rgrgf:uint32[] *
rgFileInfo:VSQEQS_FILE_ATTRIBUTE_DATA[] *
pfEditVerdict:uint32 byref *
prgfMoreInfo:uint32 byref -> int
Function QueryEditFiles (
rgfQueryEdit As UInteger,
cFiles As Integer,
rgpszMkDocuments As String(),
rgrgf As UInteger(),
rgFileInfo As VSQEQS_FILE_ATTRIBUTE_DATA(),
<OutAttribute> ByRef pfEditVerdict As UInteger,
<OutAttribute> ByRef prgfMoreInfo As UInteger
) As Integer
Parâmetros
- rgfQueryEdit
[in] Conjunto de valores de sinalizador extraído de tagVSQueryEditFlags enumeração.O padrão é 0.
- cFiles
[in] Contagem de arquivos.
- rgpszMkDocuments
[in] Arquivo a ser processado.Este é o mesmo tamanho que cFiles.Não é válido para cFiles 0.
- rgrgf
[in] Uma matriz de valores de sinalizador extraído de tagVSQEQSFlags enumeração.NULLsignifica que eles são todos 0.
- rgFileInfo
[in] Extraído de valores a VSQEQS_FILE_ATTRIBUTE_DATA estrutura que contém informações sobre os atributos de arquivo.Isso pode ser null; it is ignored if rgrgf is null.
- pfEditVerdict
[out] Extraído de valores a tagVSQueryEditResult enumeração que indica se a edição pode continuar.
- prgfMoreInfo
[out] Ponteiro para um conjunto de sinalizadores cujos valores são obtidos a partir do tagVSQueryEditResultFlags enumeração.
Valor de retorno
Type: System.Int32
Se o método for bem-sucedido, ele retorna S_OK.Se ele falhar, ele retorna um código de erro.
O valor de retorno em pfEditCanceled indica se ele está OK para edição do arquivo para continuar.
O parâmetro prgfMoreInfo retorna os seguintes resultados:
Todos os arquivos que são check-out
Se todos os arquivos alterados no check-out
Todos os arquivos estão sendo editados na memória
Se não é permitido editar na memória
Se o check-out com ruído é necessário (no modo silencioso apenas)
Se o check-out foi cancelada ou falhou
Comentários
COM assinatura
De ivsqueryeditquerysave2.idl
HRESULT QueryEditFiles(
[in] VSQueryEditFlags rgfQueryEdit,
[in] int cFiles,
[in, size_is(cFiles)] const LPCOLESTR rgpszMkDocuments[],
[in, size_is(cFiles)] const VSQEQSFlags rgrgf[],
[in, size_is(cFiles)] const VSQEQS_FILE_ATTRIBUTE_DATA rgFileInfo[],
[out] VSQueryEditResult *pfEditVerdict,
[out] VSQueryEditResultFlags *prgfMoreInfo
);
Editores, definidos como qualquer item que pode alterar o conteúdo de um arquivo de projeto, devem chamar este método antes da primeira edição em um documento que ainda não foram alterado.Tudo o que edita o conteúdo do arquivo de solução (. sln) pode chamar QueryEditSolutionFile, que irá chamar este método.
Se um arquivo não é somente leitura e não está sob controle de origem, QER_EditOK é retornado.
Se um arquivo for somente leitura, se ele não estiver sob controle de origem e se rgfQueryEdit não inclui QEF_AllowInMemoryEdits (ou a caixa de diálogo de opções está configurada para não permitir a edição de arquivos somente leitura), em seguida, QER_NoEdit_UserCanceled é silenciosamente retornado e a edição não deve ser comprometida com os dados do documento na memória.Se o ambiente estiver no modo de ruidoso, ele solicitará que o usuário que a edição é cancelada.
Se um arquivo for somente leitura, se ele não estiver sob controle de origem e se rgfQueryEdit inclui QEF_AllowInMemoryEdits (ou a caixa de diálogo de opções está definida para permitir edições de memória), em seguida, QER_EditOK silenciosamente é retornado.
Se um arquivo é somente leitura e sob controle de origem, o usuário terá a opção ou não fazer check-out do arquivo.Se o arquivo está check-out, QER_EditOK é retornado; Caso contrário, QER_NoEdit_UserCanceled é retornado.Neste caso é um pouco mais complicado se o ambiente não suporta a opção "checkout local version" (e a levando em reloadability de conta) se o usuário já tiver a versão mais recente do arquivo e se é permitida a edição de na memória (ou seja, QEF_AllowInMemoryEdits).Na maioria dos casos, no entanto, edições de memória de arquivos com check-in não são possíveis.
Editores, Reloadability e check-out
Quando você chama QueryEditFiles, sempre há a possibilidade de um arquivo de check-out, que pode alterar o conteúdo do arquivo na memória e no disco.
Por causa do potencial de conteúdo alterado, todos os VSPackages fazer alterações de arquivo deve chamar QueryEditFiles na primeira tentativa de alterar o conteúdo do arquivo, antes de realmente são feitas alterações no arquivo.Se um VSPackage não chama QueryEditFiles primeiro e já foram feitas alterações no arquivo na memória, essas alterações na memória podem ser perdidas como resultado do que está sendo submetido a check out.Isso é considerado um bug no VSPackage.
As informações sobre se um arquivo foi alterado são retornadas na *prgfMoreInfo retornar valor via o QER_Reloaded ou QER_Changed sinalizadores.
Importante |
---|
QER_Changedsomente é retornado se QEF_DetectAnyChangedFile sinalizador é passado a rgfQueryEdit argumento para o QueryEditFiles chamar. |
Se um arquivo estiver na tabela de documentos em execução, e QueryEditFiles determina que será necessária uma recarga, ele tentará recarregar o conteúdo do arquivo.Se ele não pode recarregar seus dados, ele exibe uma caixa de mensagem avisando o usuário fechar e reabrir o documento manualmente.Se você estiver implementando um editor personalizado, consulte IVsPersistDocData para obter informações sobre como oferecer suporte a recarrega em seus documentos.
Arquivos de projeto
Cabe a cada projeto para chamar QueryEditFiles quando uma alteração está prestes a ser feita às informações que é persistente em um arquivo de projeto e para chamar QuerySaveFile ou QuerySaveFiles antes de salvar o arquivo de projeto.
Consulte também
Interface IVsQueryEditQuerySave2
Namespace Microsoft.VisualStudio.Shell.Interop
Retornar ao topo