Подтвердить что ты не робот

Как использовать библиотеку Team Foundation для расчета унифицированного diff?

Я хочу рассчитать унифицированный diff, сравнивающий два документа. (Разница заключается в том, чтобы идти по электронной почте, а Wikipedia говорит, что унифицированный 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. Однако в документации не приводились примеры расчета diff.

Как рассчитать единый diff с библиотекой 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));
4b9b3361

Ответ 1

Угадайте, что это невозможно:( Вы можете сделать это только из командной строки с помощью tf.exe.

Ответ 2

Попробуйте DiffSegment

        var diff = Difference.DiffFiles(
        before, FileType.Detect(before, null),
        after, FileType.Detect(after, null),
        options);

        while (diff != null){                
            //DO What you like with the diff(s)
            diff = diff.Next;
        }