C# 如何在IVsSingleFileGenerator中跳过文件?

C# 如何在IVsSingleFileGenerator中跳过文件?,c#,visual-studio,vs-extensibility,visual-studio-sdk,C#,Visual Studio,Vs Extensibility,Visual Studio Sdk,我有自定义工具和IVsSingleFileGenerator的实现。 如何跳过生成文件并保留输出内容的当前版本(防止重新生成) 当我返回pcbOutput=0时,输出文件被清除。读取输出文件的现有内容。然后将它们重新填充到pcb输出中 public int Generate(string wszInputFilePath, string bstrInputFileContents, string wszDefaultNamespace, IntPtr[] rgbOutputFileContent

我有自定义工具和IVsSingleFileGenerator的实现。 如何跳过生成文件并保留输出内容的当前版本(防止重新生成)


当我返回pcbOutput=0时,输出文件被清除。

读取输出文件的现有内容。然后将它们重新填充到pcb输出中

public int Generate(string wszInputFilePath, string bstrInputFileContents, string wszDefaultNamespace, IntPtr[] rgbOutputFileContents, out uint pcbOutput, IVsGeneratorProgress pGenerateProgress)
{
    var originalFileName = GetOriginalFileName(wszInputFilePath);
    SaveOutputContent(rgbOutputFileContents, out pcbOutput, system.IO.File.ReadAllText(originalFileName));
    return VSConstants.S_OK;
}

您必须为GetOriginalFileName编写代码

如果返回
VSConstants.E_FAIL
而不是
VSConstants.S_OK
,会发生什么?我要尝试的另一件事是返回
VSConstants.S_FALSE
@280Z28如果我返回
S_OK
S_FALSE
,生成器将清除输出文件,因为输出参数为0。当我返回
E_FAIL
时,生成器将删除输出文件。
public int Generate(string wszInputFilePath, string bstrInputFileContents, string wszDefaultNamespace, IntPtr[] rgbOutputFileContents, out uint pcbOutput, IVsGeneratorProgress pGenerateProgress)
{
    var originalFileName = GetOriginalFileName(wszInputFilePath);
    SaveOutputContent(rgbOutputFileContents, out pcbOutput, system.IO.File.ReadAllText(originalFileName));
    return VSConstants.S_OK;
}