IVsSingleFileGenerator.Generate 方法

执行转换并返回新生成的输出文件,时,自定义工具加载,或者输入保存文件。

命名空间:  Microsoft.VisualStudio.Shell.Interop
程序集:  Microsoft.VisualStudio.Shell.Interop(在 Microsoft.VisualStudio.Shell.Interop.dll 中)

语法

声明
Function Generate ( _
    wszInputFilePath As String, _
    bstrInputFileContents As String, _
    wszDefaultNamespace As String, _
    <OutAttribute> rgbOutputFileContents As IntPtr(), _
    <OutAttribute> ByRef pcbOutput As UInteger, _
    pGenerateProgress As IVsGeneratorProgress _
) As Integer
int Generate(
    string wszInputFilePath,
    string bstrInputFileContents,
    string wszDefaultNamespace,
    IntPtr[] rgbOutputFileContents,
    out uint pcbOutput,
    IVsGeneratorProgress pGenerateProgress
)

参数

  • wszInputFilePath
    类型:System.String
    [in] 输入文件的完整路径。可能为在 Visual Studio未来版本的 nullnull 引用(在 Visual Basic 中为 Nothing) ,因此,生成器不应依赖于此值。
  • bstrInputFileContents
    类型:System.String
    [in] 输入文件的内容。这是 UNICODE BSTR (如果输入文件是文本) 或二进制 BSTR (如果输入文件二进制)。如果输入文件是文本文件,项目系统会自动转换为 BSTR UNICODE。
  • wszDefaultNamespace
    类型:System.String
    [in] 此参数为生成代码的自定义工具仅是有意义的。它表示生成的代码将放在的命名空间。如果参数不是 nullnull 引用(在 Visual Basic 中为 Nothing) 和不为空,自定义工具可使用以下语法将生成的代码。
    ' Visual Basic Namespace [default namespace]
    ... End Namespace
    // Visual C#
    namespace [default namespace] { ... }
  • rgbOutputFileContents
    类型:array<System.IntPtr[]
    [out] 返回要写入的字节数组到生成的文件。在返回的字节数组必须包含 UNICODE 或 UTF-8 签名字节,则为基元的流。必须将 rgbOutputFileContents 的内存使用 .NET framework 调用, System.Runtime.InteropServices.AllocCoTaskMem,或等效的 Win32 系统调用, CoTaskMemAlloc。项目系统为释放该内存负责。
  • pcbOutput
    类型:System.UInt32%
    [out] 返回计数。 rgbOutputFileContent 数组的字节。

返回值

类型:System.Int32
如果方法成功,则返回 S_OK。如果失败,它会返回一个错误代码。

备注

COM 签名

从 vsshell.idl:

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

出于性能原因,项目系统重用自定义工具的一个实例化处理多文件转换。 因此,应模型在其生存期内,自定义工具处理多个调用生成。

项目系统独立通过 IVsGeneratorProgress报告错误的解释生成的返回值。 也就是说,如果错误通过 IVsGeneratorProgress报表,此方法仍然必须返回失败的整个生成进程失败。

.NET Framework 安全性

请参见

参考

IVsSingleFileGenerator 接口

Microsoft.VisualStudio.Shell.Interop 命名空间