Partilhar via


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.

System_CAPS_importantImportante

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