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.
pGenerateProgress
Type: Microsoft.VisualStudio.Shell.Interop.IVsGeneratorProgress[in] Uma referência para o IVsGeneratorProgress interface por meio do qual o gerador pode relatar seu progresso no sistema de projeto.
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