使用TFS API进行差异化

hal*_*000 12 diff tfs visual-studio-2010 c#-4.0

有没有人知道是否可以对不受源代码控制的文件使用TFS Difference.DiffFiles()方法?我知道当我在源代码控制UI中时,我可以选择让我移动到工作区之外的本地路径.我已经做了一些努力使这个工作,但我不知道如何阅读DiffSegment结果.

    options.Flags = DiffOptionFlags.None;
    options.OutputType = DiffOutputType.Unified;
    options.TargetEncoding = Console.OutputEncoding;
    options.SourceEncoding = Console.OutputEncoding;
    options.StreamWriter = new StreamWriter(memStream);
    options.StreamWriter.AutoFlush = true;

    DiffSegment seg = Difference.DiffFiles(pathA, Encoding.UTF8.WindowsCodePage, pathB, Encoding.UTF8.WindowsCodePage, options);
Run Code Online (Sandbox Code Playgroud)

在一些精简测试中,我似乎可以看到添加的段但是OriginalStart似乎与ModifiedStart匹配,所以我可能不想这样做.如果有人对一个体面的Diff API有推荐,我就会打开.

Mic*_*lMa 9

tfs api绝对允许你比较两个本地文件.我认为您不需要大多数DiffOptionFlags,您可以执行以下操作:

DiffSegment segment = Difference.DiffFiles(
    file1, 
    FileType.Detect(file1, null), 
    file2, 
    FileType.Detect(file2, null), 
    new DiffOptions());
Run Code Online (Sandbox Code Playgroud)

由于穆罕默德简要介绍这里.

罗素详细描述了如何处理DiffSegment 这里.

例如,我做了以下事情

do
{
    Console.WriteLine(segment.Type + " " + segment.OriginalStart + " " + Segment.OriginalLength);
} while ((segment = segment.Next) != null);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!