Compartilhar via


Método IVsSingleFileGenerator.Generate (String, String, String, IntPtr , UInt32, IVsGeneratorProgress)

 

Publicado: abril de 2016

Executa a transformação e retorna o arquivo de saída recém-gerada, sempre que uma ferramenta personalizada é carregada, ou o arquivo de entrada é salva.

Namespace:   Microsoft.VisualStudio.Shell.Interop
Assembly:  Microsoft.VisualStudio.Shell.Interop (em Microsoft.VisualStudio.Shell.Interop.dll)

Sintaxe

int Generate(
    string wszInputFilePath,
    string bstrInputFileContents,
    string wszDefaultNamespace,
    IntPtr[] rgbOutputFileContents,
    out uint pcbOutput,
    IVsGeneratorProgress pGenerateProgress
)
int Generate(
    String^ wszInputFilePath,
    String^ bstrInputFileContents,
    String^ wszDefaultNamespace,
    array<IntPtr>^ rgbOutputFileContents,
    [OutAttribute] unsigned int% pcbOutput,
    IVsGeneratorProgress^ pGenerateProgress
)
abstract Generate : 
        wszInputFilePath:string *
        bstrInputFileContents:string *
        wszDefaultNamespace:string *
        rgbOutputFileContents:nativeint[] *
        pcbOutput:uint32 byref *
        pGenerateProgress:IVsGeneratorProgress -> int
Function Generate (
    wszInputFilePath As String,
    bstrInputFileContents As String,
    wszDefaultNamespace As String,
    rgbOutputFileContents As IntPtr(),
    <OutAttribute> ByRef pcbOutput As UInteger,
    pGenerateProgress As IVsGeneratorProgress
) As Integer

Parâmetros

  • wszInputFilePath
    Type: System.String

    [in] O caminho completo do arquivo de entrada. Pode ser null em versões futuras do Visual Studio, portanto, não devem contar com geradores esse valor.

  • bstrInputFileContents
    Type: System.String

    [in] O conteúdo do arquivo de entrada. Isso é um BSTR UNICODE (se o arquivo de entrada é texto) ou um BSTR binário (se o arquivo de entrada é binário). Se o arquivo de entrada é um arquivo de texto, o sistema de projeto converte automaticamente o BSTR para UNICODE.

  • wszDefaultNamespace
    Type: System.String

    [in] Esse parâmetro é significativo apenas para ferramentas personalizadas que geram código. Representa o namespace no qual o código gerado será colocado. Se o parâmetro não é null e não está vazia, a ferramenta personalizada pode usar a sintaxe a seguir para incluir o código gerado.

    ' Visual Basic Namespace [default namespace]

    ... End Namespace

    // Visual C#

    namespace [default namespace] { ... }

  • rgbOutputFileContents
    Type: System.IntPtr[]

    [out] Retorna uma matriz de bytes a serem gravados no arquivo gerado. Você deve incluir UNICODE ou UTF-8 bytes de assinatura da matriz de bytes retornada, pois esse é um fluxo bruto. A memória para rgbOutputFileContents deve ser alocada usando a chamada do .NET Framework, System.Runtime.InteropServices.AllocCoTaskMem ou a chamada do sistema Win32 equivalente, CoTaskMemAlloc. O sistema de projeto é responsável por liberar essa memória.

  • pcbOutput
    Type: System.UInt32

    [out] Retorna a contagem de bytes a rgbOutputFileContent matriz.

Valor Retornado

Type: System.Int32

Se o método for bem-sucedido, ele retornará S_OK. Se ele falhar, ele retorna um código de erro.

Comentários

COM assinatura

De vsshell.idl:

HRESULT IVsSingleFileGenerator::Generate(
   [in] LPCOLESTR wszInputFilePath,
   [in] BSTR bstrInputFileContents,
   [in] LPCOLESTR wszDefaultNamespace,
   [out] BYTE** rgbOutputFileContents,
   [out] ULONG* pcbOutput,
   [in] IVsGeneratorProgress* pGenerateProgress
);

Por motivos de desempenho, o sistema de projeto reutiliza uma única instância de uma ferramenta personalizada para lidar com várias transformações de arquivo. Portanto, uma ferramenta personalizada deve ser projetada para lidar com várias chamadas para gerar durante seu ciclo de vida.

O sistema de projeto interpreta o valor de retorno de gerar independentemente dos erros relatados por meio de IVsGeneratorProgress. Ou seja, se forem relatados erros por meio de IVsGeneratorProgress, esse método deve retornar ainda falha do processo geral de geração de falha.

Confira Também

Interface IVsSingleFileGenerator
Namespace Microsoft.VisualStudio.Shell.Interop

Retornar ao início