我想计算出比较两个文档的统一差异(diff)(差异将以电子邮件形式发送,维基百科称统一差异是最好的普通文本差异格式)。
Team Foundation有一个命令行接口可用于此操作。
> tf diff /format:unified alice.txt bob.txt
- Alice started to her feet,
+ Bob started to her feet,
(示例文件位于https://gist.github.com/hickford/5656513)
非常聪明,但我宁愿使用库而不是启动外部进程,出于通常的原因。
在搜索 MSDN 时,我找到了 Team Foundation 的 .NET 库 Microsoft.TeamFoundation.VersionControl
。但是,文档没有给出计算差异的示例。
如何在 Team Foundation 库中计算统一的差异?
编辑:我尝试了方法Difference.DiffItems
,但它没有起作用——文件diff.txt
保持为空。
var before = @"c:\alice.txt";
var after = @"c:\bob.txt";
var path = @"c:\diff.txt";
using (var w = new StreamWriter(path))
{
var options = new DiffOptions();
options.OutputType = DiffOutputType.Unified;
options.StreamWriter = w;
Difference.DiffFiles(
before, FileType.Detect(before, null),
after, FileType.Detect(after, null),
options );
}
Console.WriteLine(File.ReadAllText(path));