nildiff 1.20.0

dotnet tool install --global nildiff --version 1.20.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local nildiff --version 1.20.0
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=nildiff&version=1.20.0
                    
nuke :add-package nildiff --version 1.20.0
                    

nildiff

.NET Global Tool for folder diff and release validation. Compares two folders and generates structured diff reports.

Install

dotnet tool install -g nildiff

Usage

# Compare two folders
nildiff "/path/to/old-folder" "/path/to/new-folder" "my-comparison" --no-pause

# Or omit the label to auto-generate a high-resolution timestamp
nildiff "/path/to/old-folder" "/path/to/new-folder" --no-pause

# Interactive wizard mode
nildiff --wizard

# Show help
nildiff --help

# Check IL disassembler detection
nildiff --doctor

Output

File Description
diff_report.md Markdown report for archiving and text-based review
diff_report.html Interactive single-file HTML report with sign-off workflow
audit_log.json Structured audit log with SHA256 hashes

Key Feature: IL-Level Comparison

For .NET assemblies (.dll, .exe), nildiff compares at the IL level rather than binary level, filtering out build-specific noise (MVID, timestamps). Functionally identical assemblies are reported as "unchanged" even when binary hashes differ due to non-deterministic builds.

Configuration

The tool works out of the box with default settings. To customize behavior, either create a user-local config.json in the default app-data location below or pass it via --config:

nildiff "/old" "/new" "label" --config /path/to/config.json

When the report label is omitted, nildiff auto-generates a high-resolution timestamp label. Tokens beginning with -- are treated as options, not report labels.

Individual settings can also be overridden via FOLDERDIFF_* environment variables (e.g. FOLDERDIFF_MAXPARALLELISM=8). For maintainer-only IL noise suppression, --creator applies the predefined buildserver-winforms ILIgnoreLineContainingStrings profile. See the annotated sample config for all available settings.

The default user-local config.json location varies by OS:

OS Path
Windows %LOCALAPPDATA%\FolderDiffIL4DotNet\config.json
macOS ~/Library/Application Support/FolderDiffIL4DotNet/config.json
Linux ~/.local/share/FolderDiffIL4DotNet/config.json

Note: This user-local config survives global-tool updates. If it does not exist, the tool falls back to the bundled config.json next to the executable.

By default, reports and logs are also written under the same user-local app-data root resolved from Environment.SpecialFolder.LocalApplicationData (Reports/ and Logs/).

Optional: IL Disassembler

For IL-level comparison, install an IL disassembler:

dotnet tool install -g dotnet-ildasm

Without an IL disassembler, .NET assemblies are compared by SHA256 hash only. Run nildiff --doctor to verify whether dotnet-ildasm or ilspycmd is visible on PATH.

Requirements

License

MIT

Product Compatible and additional computed target framework versions.
.NET 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 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.20.0 99 5/10/2026
1.19.0 92 5/1/2026
1.18.3 102 4/29/2026
1.18.2 101 4/26/2026
1.18.1 105 4/20/2026
1.18.0 102 4/18/2026
1.17.2 101 4/17/2026
1.16.10 102 4/13/2026
1.16.9 103 4/12/2026
1.16.8 105 4/11/2026
1.16.7 100 4/11/2026
1.16.6 103 4/11/2026
1.16.5 102 4/11/2026
1.16.4 112 4/10/2026
1.16.3 111 4/9/2026
1.16.2 97 4/9/2026
1.16.1 108 4/8/2026
1.16.0 111 4/8/2026
1.15.0 96 4/8/2026