Je veux calculer un diff unifié comparant deux documents. (Le diff est d’aller dans un email, et Wikipedia dit qu’un diff est le meilleur format de diff en texte brut.)
Team Foundation a une interface en ligne de commande pour le faire
> tf diff /format:unified alice.txt bob.txt - Alice started to her feet, + Bob started to her feet,
(Exemples de fichiers sur https://gist.github.com/hickford/5656513 )
Génial, mais je préférerais utiliser une bibliothèque plutôt que de lancer un processus externe, pour les raisons habituelles.
En recherchant MSDN, j’ai trouvé que Team Foundation avait une bibliothèque .NET Microsoft.TeamFoundation.VersionControl
. Cependant, la documentation ne donnait aucun exemple de calcul d’un diff.
Comment calculer un diff unifié avec la bibliothèque Team Foundation?
Edit: J’ai essayé la méthode Difference.DiffItems
mais cela n’a pas fonctionné – le fichier diff.txt
est resté vide.
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));
S’il vous plaît essayer 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; }
Je suppose que ce n’est pas possible 🙁 Vous ne pouvez le faire qu’en ligne de commande avec tf.exe
.