适用于 .NET 的开源文本差异对比组件

d31579718dfd97a9d993c517fd0f2929.png

7473cd9743b00226b6ac444acec851c7.gif

32a2cf9600a54c43dc3b103db9320535.png

你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具或组件,希望对您有用!

简介

对于开发人员来说,Git 是我们经常使用的工具,在每次编写完代码并提交后,我们可以通过 git diff 来对比不同版本之间的代码的差异,当然也可以借助一下开发工具, 这样可以让我们很直观的看到修改了哪里? 不同版本之间有什么不同?这样也可以很方便的来做 code review。

430a0383c2c80ed01e212201605076ad.png如果让你自己实现一个这样的功能,你会怎么做呢?下面介绍一个组件库,希望能够帮助到你。

DiffPlex 是一个使用 C# 开发的开源文本差异对比组件,支持在控制台、Web、Winform、WPF 项目中使用。

小试牛刀

首先,使用 Nuget 安装 DiffPlex 组件。

添加以下代码, before 为修改前文字,after 为修改后文字。

using DiffPlex.DiffBuilder.Model;
using DiffPlex.DiffBuilder;var before = $@"
春种一粒粟,
秋收万颗子。
四海无闲田,
农夫犹饿死。
";var after = $@"
春种一粒粟,
秋收万颗子。
谁知盘中餐,
粒粒皆辛苦。
";

编写以下代码,进行文字对比。

var diff = InlineDiffBuilder.Diff(before, after);var savedColor = Console.ForegroundColor;
foreach (var line in diff.Lines)
{switch (line.Type){case ChangeType.Inserted:Console.ForegroundColor = ConsoleColor.Green;Console.Write("+ ");break;case ChangeType.Deleted:Console.ForegroundColor = ConsoleColor.Red;Console.Write("- ");break;default:Console.ForegroundColor = ConsoleColor.Gray;  Console.Write("  ");break;}Console.WriteLine(line.Text);
}
Console.ForegroundColor = savedColor;

下图中在控制台输出了文本的差异。

05682561ed23d8ffb96b2d71067a2042.png

DiffPlex 项目中还包含一个示例网站,展示了如何在 ASP MVC 网站中创建基础的文本对比差异。

b14c700b9e061f9f2b739a85cf694fdd.png

DiffPlex 还支持在 WinUI 3, WPF, Winform 中直接使用,如下

d8dc96bb5043913dd3465cc9566a73f6.png6abb5a85bfea2bdb426c8c8c18b33568.png

项目地址

https://github.com/mmanela/diffplex

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281594.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

box-shadow阴影合集

2019独角兽企业重金招聘Python工程师标准>>> * box-shadow可以设置6个值。其中4个可选;2个必须指定:分别是x轴偏移量和y轴偏移量,这2个值可以是正值,可以是负值,也可以是0,但不可以省略不写 阴影…

《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一一2.5 为跨年度的个人参赛选手构造记录...

本节书摘来自华章计算机《数据科学R语言实践:面向计算推理与问题求解的案例研究法》一书中的第2章,第2.5节,作者:[美] 德博拉诺兰(Deborah Nolan)  邓肯坦普朗(Duncan Temple Lang)  更多章…

基于 abp 微服务架构的开源低代码平台

你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具或组件,希望对您有用!简介 ABP-MicroService是 一个基于ABP vNext微服务架构、vue-element-admin的后台管理框架,适用于大型分布式业务系统和企…

linux android sdk gengxinman,Android 实现增量更新

一、概述增量更新相较于全量更新的好处不言而喻,利用差分算法获得1.0版本到2.0版本的差分包,这样在安装了1.0的设备上只要下载这个差分包就能够完成由1.0-2.0的更新。比如:存在一个1.0版本的apkapk1.png然后需要升级到2.0版本,而2…

Pycharm上Django的使用 Day8

2019独角兽企业重金招聘Python工程师标准>>> 1.添加新条目 1>编写用于添加新条目的表单 在forms.py中创建一个与模型Entry相关联的表单 1处给字段text指定一个空标签 2处定义小部件widgets,widgets是一个HTML表单元素 2>定义new_entry的URL模式 在用于添加新条…

物联网创新领域的三大驱动性趋势

从设备对接到区块链,今天我们将介绍几项物联网开发者必须了解的最新技术趋势。 物联网正在快速改变着我们的工作与生活方式。过去十年以来,利用惟一IP地址实现联网早已不是难事,但传感器、处理器以及其它多种新兴技术的涌现真正让物联网走向了…

TensorFlow.NET 实战 -- 为.NET开发者开启机器学习之旅

在IT技术飞速发展的今天,云计算、人工智能、大数据和云原生应用等新兴技术的发展为我们带来一波又一波的浪潮,也对软件开发者提出了更高的要求,特别是人工智能开发领域,应运而生的新概念让人目不暇接。作为一个.NET开发者的你&…

Arduino I/O Expansion Shield V7.1

介绍: 传感器扩展板,目的是为初学者省去繁琐的面包板接线和故障排除,专注实现自己的创意想法。 扩展板V7.1不仅保留老版本的所有优点,改善了它的易用性,更重要的是它兼容Arduino新一代主控器DUE。现在V7.1以其强大的扩…

简单的单臂路由的配置实验 (思科)

实验名称:简单的单臂路由的 配置实验 (思科)实验拓扑: 实验需要:1、按图中所示配置设网络备vlan,IP地址2、能够使各pc互相ping通。 实验步骤: 1、配置终端设备:pc1-pc5按照拓扑图中所…

【Redis源码分析】Redis命令处理生命周期

运营研发团队 李乐 前言 本文主要讲解服务器处理客户端命令请求的整个流程,包括服务器启动监听,接收命令请求并解析,执行命令请求,返回命令回复等,这也是本文的主题“命令处理的生命周期”。 Redis服务器作为典型的事件…

GDB调试qemu-kvm

GDB调试qemu-kvm 前面几篇博文都是记录一些kvm相关包编译安装及使用,但都没深入去代码看看。看源码在配合上相关原理才能更好的理解kvm。但qemu-kvm的代码量很多,对我来讲直接看源码收获甚少,所以找了个调试工具——GDB来配合阅读代码。接下来…

用.NET设计一个假装黑客的屏幕保护程序

本文主要介绍屏幕保护程序的一些相关知识,以及其在安全方面的用途,同时介绍了如何使用 .NET 开发一款屏幕保护程序,并对核心功能做了介绍,案例代码开源:https://github.com/sangyuxiaowu/HackerScreenSaver背景前几天在…

【IntelliJ】IntelliJ IDEA常用设置及快捷键以及自定义Live templates

IntelliJ IDEA是一款非常优秀的JAVA编辑器,初学都可会对其中的一些做法感到很别扭,刚开始用的时候我也感到很不习惯,在参考了网上一些文章后在这里把我的一些经验写出来,希望初学者能快速适应它,不久你就会感觉到编程是…

c语言时钟报告,C语言图形时钟课程设计实验报告

C语言图形时钟课程设计实验报告 目录1.系统功能要求。2. 数据结构设计及说明。3.程序结构(画流程图) 。4.各模块的功能。5.试验结果(包括输入数据和输出结果) 。6.体会。7.参考文献。8.附录:程序清单及源程序。 系统功能要求:在屏幕上显示一个图形时钟…

微软发布 2023 财年第一季度财报:营收达 501 亿美元,同比增长 11%

北京时间 2022 年 10 月 26 日——微软发布 2023 财年第一季度财报。财报显示,截止到 2022 年 9 月 30 日:营收达到 501 亿美元,增长 11%(按固定汇率计算增长 16%)运营收入为 215 亿美元,增长 6%&#xff0…

《图解CSS3:核心技术与案例实战》——1.3节渐进增强

本节书摘来自华章社区《图解CSS3:核心技术与案例实战》一书中的第1章,第1.3节渐进增强,作者 大漠,更多章节内容可以访问云栖社区“华章社区”公众号查看 1.3 渐进增强第一次听到“渐进增强”(Progressive Enhancement…

阿里云云主机搭建网站攻略 - 云翼计划

阿里云服务器(云主机)搭建网站攻略 - 云翼计划 提示:此搭建攻略为2017版本,阿里云未跟新前。 最新搭建攻略请前往 Amaya丶夜雨博客 / 最新个人博客 https://www.amayaliu.cn 支持一下哦,谢谢。(9.5一…

记一次 .NET 某医疗器械 程序崩溃分析

一:背景 1.讲故事前段时间有位朋友在微信上找到我,说他的程序偶发性崩溃,让我帮忙看下怎么回事,上面给的压力比较大,对于这种偶发性崩溃,比较好的办法就是利用 AEDebug 在程序崩溃的时候自动抽一管血出来&a…

1251: 字母图形 [水题]

1251: 字母图形 [水题] 时间限制: 1 Sec 内存限制: 128 MB提交: 140 解决: 61 统计题目描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF CBABCDE DCBABCD EDCBABC 这是一个5行7列的图形,请找出这个图形的规律&…

WPF效果第二百零二篇之TreeView带连接线

前面文章中分享了TreeView支持多选;然而在项目上使用时,领导觉得不满意:体现不了真正的从属关系;既然领导都发话了;那就开整就行了;今天就再来个带有连接线的TreeView效果:1、来看看TreeViewItem的Template:2、展开和收缩动画:3、参考资料https://www.codeproject.com/tips/673…