DocWright.Compare
1.1.2
dotnet add package DocWright.Compare --version 1.1.2
NuGet\Install-Package DocWright.Compare -Version 1.1.2
<PackageReference Include="DocWright.Compare" Version="1.1.2" />
<PackageVersion Include="DocWright.Compare" Version="1.1.2" />
<PackageReference Include="DocWright.Compare" />
paket add DocWright.Compare --version 1.1.2
#r "nuget: DocWright.Compare, 1.1.2"
#:package DocWright.Compare@1.1.2
#addin nuget:?package=DocWright.Compare&version=1.1.2
#tool nuget:?package=DocWright.Compare&version=1.1.2
DocWright.Compare
Compare two Word documents and get a single document back carrying the differences as
real tracked changes — w:ins, w:del, w:rPrChange and w:pPrChange. Open the
result in Word and review it exactly like any other compared document.
Add-on for DocWright.
Install
dotnet add package DocWright.Compare
You will normally also want the main package, which is what loads and saves documents:
dotnet add package DocWright
Usage
using DocWright;
using DocWright.Compare;
using DocWright.Dom;
var converter = new DocWrightConverter();
using WordDocument original = converter.Load(File.OpenRead("v1.docx"));
using WordDocument revised = converter.Load(File.OpenRead("v2.docx"));
CompareResult result = new DocumentComparer().Compare(original, revised, new CompareOptions
{
Author = "Review bot",
Timestamp = "2026-08-06T09:00:00Z", // supplied, never read from the clock
});
Console.WriteLine($"{result.InsertionCount} insertions, {result.DeletionCount} deletions, "
+ $"{result.FormatChangeCount} formatting changes, {result.Moves.Count} moves");
using FileStream output = File.Create("compared.docx");
converter.Save(result.Document, output);
The result keeps the revised document's styles, numbering and theme, with a body carrying both versions as tracked changes.
What you get
- Paragraph alignment, then run-level differencing inside each aligned pair
- Move detection — a block that moved is reported as a move, not as a delete plus an
unrelated insert (
result.Moves,CompareOptions.MoveDetection) - Formatting-only changes recorded as
w:rPrChange/w:pPrChange CompareGranularityto compare by word or by character- Bounded execution, so a pathological pair cannot run away
Determinism
Timestamp and Author are values you supply. Nothing is read from the system clock, so
comparing the same two documents twice produces byte-identical output.
Requirements
.NET Framework 4.8, .NET Standard 2.0, .NET 8.0 or .NET 10.0.
License
MIT.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 is compatible. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.8
- DocWright.Dom (>= 1.1.2)
- Microsoft.Bcl.HashCode (>= 1.1.1)
- System.Buffers (>= 4.6.1)
- System.Memory (>= 4.6.3)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
-
.NETStandard 2.0
- DocWright.Dom (>= 1.1.2)
- Microsoft.Bcl.HashCode (>= 1.1.1)
- System.Buffers (>= 4.6.1)
- System.Memory (>= 4.6.3)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
-
net10.0
- DocWright.Dom (>= 1.1.2)
-
net8.0
- DocWright.Dom (>= 1.1.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
See https://github.com/albahadly/DocWright/releases for release notes.