Initial difference behavior
Behavior when an input is verified for the first time.
Behavior depends on if an EmptyFiles can be found matching the current extension.
- If an EmptyFiles can be found matching the current extension, then the tool will be launched to compare the input to that empty file.
- If no EmptyFiles can be found no tool will be launched.
Detected difference behavior
Behavior when a difference is detected between the input and an existing current verified file.
If no tool is running for the comparison of the current verification (per test), a new tool instance will be launched.
If a tool is running for the comparison of the current verification (per test), and a new verification fails, the following logic will be applied:
| Auto Refresh |
Mdi |
Behavior |
| true |
true |
No action. Current instance will refresh |
| true |
false |
No action. Current instance will refresh |
| false |
true |
Open new instance. Previous instance must be manually closed |
| false |
false |
Kill current and open new instance |
The bundled DiffEngineViewer is the exception: it queues every failing pair into one window, so none of the four rows describes it.
This allows, in most cases, for no manual closing of the tool to be required.
By default a maximum of 5 tool instances will be launched. This prevents a change that breaks many tests from causing too much load on a machine.
This value can be changed using an environment variable or by explicitly specifying the value by code. When both are used, the value set in code wins; the environment variable is the ambient default for a run that sets nothing.
The count includes DiffEngineViewer, but only when a viewer has to be started. Handing a pair to one already on screen opens no window and so spends nothing.
Using an environment variable
Setting the DiffEngine_MaxInstances environment variable to the number of instances to launch.
This value can also be set using the DiffEngineTray options dialog.
DiffRunner.MaxInstancesToLaunch(10);
snippet source | anchor
By default, when a diff is opened, the temp file is on the left and the target file is on the right.
This value can be changed by setting the DiffEngine_TargetOnLeft environment variable to true.
This value can also be set using the DiffEngineTray options dialog.
Successful verification behavior
If a tool is running for the comparison of the current verification (per test), and a new verification passes, the following logic will be applied:
| Mdi |
Behavior |
| true |
No action taken. Previous instance must be manually closed |
| false |
Kill current instance |
This allows, in most cases, for no manual closing of the tool to be required.
Disable orphaned process detection
Resharper has a feature Check for orphaned processes spawned by test runner.
By default, ReSharper maintains a list of all processes that are launched by the executed tests. If some of theses processes do not exit after the test execution is over, ReSharper will suggest you to terminate the process. If your setup requires some processes started by the tests to continue running, you can clear this checkbox to avoid unnecessary notifications.
Since this project launches diff tools, it will trigger this feature and a dialog will show:
All unit tests are finished, but child processes spawned by the test runner process are still running. Terminate child process?

As such this feature needs to be disabled:
Add the following to [Solution].sln.DotSettings.
<s:String x:Key="/Default/Housekeeping/UnitTestingMru/UnitTestRunner/SpawnedProcessesResponse/@EntryValue">DoNothing</s:String>
ReSharper | Options | Tools | Unit Testing | Test Runner

File | Settings | Manage Layers | This computer | Edit Layer | Build, Execution, Deployment | Unit Testing | Test Runner

Tools location is automatically detected. If a tool installed in a custom location, it can be manually configured using an environment variable, that points to the executable. The environment variable format is DiffEngine_{ToolName}.
Non-MDI tools are preferred since it allows DiffEngineTray to track and close diffs.
- Cost: Paid
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_BeyondCompare
- Supported binaries: .7z, .bcpkg, .bin, .bmp, .bz, .bz2, .cab, .chm, .deb, .ear, .gif, .gz, .ico, .img, .iso, .jar, .jpeg, .jpg, .kmz, .nupkg, .pdf, .png, .rar, .rpm, .rtf, .svg, .swm, .tar, .tbz, .tbz2, .tgz, .tif, .tiff, .war, .webp, .wim, .xlsx, .xz, .zip, .zipx
Use tool order to prioritise BeyondCompare over other tools.
DiffTools.UseOrder(DiffTool.BeyondCompare);
- Example target on left arguments:
/solo /rightreadonly /nobackups "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
/solo /leftreadonly /nobackups "tempFile.txt" "targetFile.txt"
- Scanned paths:
- %ProgramFiles%\Beyond Compare *\BCompare.exe
- %ProgramW6432%\Beyond Compare *\BCompare.exe
- %ProgramFiles(x86)%\Beyond Compare *\BCompare.exe
- %LOCALAPPDATA%\Programs\Beyond Compare *\BCompare.exe
- %PATH%BCompare.exe
- Example target on left arguments:
-solo -rightreadonly -nobackups "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
-solo -leftreadonly -nobackups "tempFile.txt" "targetFile.txt"
- Scanned paths:
- /Applications/Beyond Compare.app/Contents/MacOS/bcomp
- %PATH%bcomp
- Example target on left arguments:
-solo -rightreadonly -nobackups "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
-solo -leftreadonly -nobackups "tempFile.txt" "targetFile.txt"
- Scanned paths:
- /usr/bin/bcompare
- %PATH%bcompare
- Cost: Paid
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_DeltaWalker
- Supported binaries: .bmp, .bz2, .doc, .docx, .ear, .gif, .gz, .htm, .html, .ico, .j2k, .jar, .jp2, .jpg, .pbm, .pct, .pdf, .pgm, .pic, .pict, .png, .pnm, .ppm, .ppt, .psd, .rtf, .svg, .tar, .tbz2, .tgz, .tif, .xls, .xlsx, .zip
Use tool order to prioritise DeltaWalker over other tools.
DiffTools.UseOrder(DiffTool.DeltaWalker);
- Example target on left arguments:
-mi "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
-mi "tempFile.txt" "targetFile.txt"
- Scanned paths:
- %ProgramFiles%\Deltopia\DeltaWalker\DeltaWalker.exe
- %ProgramW6432%\Deltopia\DeltaWalker\DeltaWalker.exe
- %ProgramFiles(x86)%\Deltopia\DeltaWalker\DeltaWalker.exe
- %PATH%DeltaWalker.exe
- Example target on left arguments:
-mi "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
-mi "tempFile.txt" "targetFile.txt"
- Scanned paths:
- /Applications/DeltaWalker.app/Contents/MacOS/DeltaWalker
- %PATH%DeltaWalker
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Use shell execute: False
- Create no window: True
- Environment variable for custom install location: DiffEngine_DiffEngineViewer
- Supported binaries: .bmp, .gif, .ico, .jpeg, .jpg, .png, .webp
Use tool order to prioritise DiffEngineViewer over other tools.
DiffTools.UseOrder(DiffTool.DiffEngineViewer);
- The one tool DiffEngine does not open per pair. Every failing pair joins one
window, so the auto-refresh and MDI table above does not describe it: nothing
is relaunched, nothing is killed, and a test that starts passing has its entry
dropped instead
- Bundled inside the DiffEngine package, so it needs no install
- Also available standalone as DiffEngineViewer.Windows, .Mac or .Linux
- Renders natively per platform: WinForms on Windows, AppKit and Core Text on
macOS, Dear ImGui through raylib on Linux
- Compares images by format, dimensions and content, and draws them, with
whichever formats each platform's own decoder reads
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Scanned paths:
- %USERPROFILE%\.dotnet\tools\DiffEngineViewer.exe
- %PATH%DiffEngineViewer.exe
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Scanned paths:
- %HOME%/.dotnet/tools/DiffEngineViewer
- %PATH%DiffEngineViewer
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Scanned paths:
- %HOME%/.dotnet/tools/DiffEngineViewer
- %PATH%DiffEngineViewer
- Cost: Free with option to donate
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_Diffinity
- Supported binaries: .svg
Use tool order to prioritise Diffinity over other tools.
DiffTools.UseOrder(DiffTool.Diffinity);
- Example target on left arguments:
"targetFile.txt" "tempFile.txt" -forceNewInstance
- Example target on right arguments:
"tempFile.txt" "targetFile.txt" -forceNewInstance
- Scanned paths:
- %ProgramFiles%\Diffinity\Diffinity.exe
- %ProgramW6432%\Diffinity\Diffinity.exe
- %ProgramFiles(x86)%\Diffinity\Diffinity.exe
- %PATH%Diffinity.exe
- Cost: Paid
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_ExamDiff
- Supported binaries: .bin, .svg
Use tool order to prioritise ExamDiff over other tools.
DiffTools.UseOrder(DiffTool.ExamDiff);
- Command line reference
- /nh: do not add files or directories to comparison history
- /diffonly: diff-only merge mode: hide the merge pane
- Example target on left arguments:
"targetFile.txt" "tempFile.txt" /nh /diffonly /dn1:"targetFile.txt" /dn2:"tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt" /nh /diffonly /dn1:"tempFile.txt" /dn2:"targetFile.txt"
- Scanned paths:
- %ProgramFiles%\ExamDiff Pro*\ExamDiff.exe
- %ProgramW6432%\ExamDiff Pro*\ExamDiff.exe
- %ProgramFiles(x86)%\ExamDiff Pro*\ExamDiff.exe
- %PATH%ExamDiff.exe
- Cost: Paid
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_Guiffy
- Supported binaries: .bmp, .gif, .jpeg, .jpg, .png, .svg, .wbmp
Use tool order to prioritise Guiffy over other tools.
DiffTools.UseOrder(DiffTool.Guiffy);
- Example target on left arguments:
"targetFile.txt" "tempFile.txt" -ge2
- Example target on right arguments:
"tempFile.txt" "targetFile.txt" -ge1
- Scanned paths:
- %ProgramFiles%\Guiffy\guiffy.exe
- %ProgramW6432%\Guiffy\guiffy.exe
- %ProgramFiles(x86)%\Guiffy\guiffy.exe
- %PATH%guiffy.exe
- Example target on left arguments:
"targetFile.txt" "tempFile.txt" -ge2
- Example target on right arguments:
"tempFile.txt" "targetFile.txt" -ge1
- Scanned paths:
- /Applications/Guiffy/guiffyCL.command
- %PATH%guiffyCL.command
- Cost: Paid
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_Kaleidoscope
- Supported binaries: .bin, .bmp, .gif, .ico, .jpeg, .jpg, .png, .svg, .tif, .tiff
Use tool order to prioritise Kaleidoscope over other tools.
DiffTools.UseOrder(DiffTool.Kaleidoscope);
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_KDiff3
- Supported binaries: .svg
Use tool order to prioritise KDiff3 over other tools.
DiffTools.UseOrder(DiffTool.KDiff3);
- --cs CreateBakFiles=0 to not save a .orig file when merging
- Example target on left arguments:
"targetFile.txt" "tempFile.txt" --cs CreateBakFiles=0
- Example target on right arguments:
"tempFile.txt" "targetFile.txt" --cs CreateBakFiles=0
- Scanned paths:
- %ProgramFiles%\KDiff3\bin\kdiff3.exe
- %ProgramW6432%\KDiff3\bin\kdiff3.exe
- %ProgramFiles(x86)%\KDiff3\bin\kdiff3.exe
- %ProgramFiles%\KDiff3\kdiff3.exe
- %ProgramW6432%\KDiff3\kdiff3.exe
- %ProgramFiles(x86)%\KDiff3\kdiff3.exe
- %PATH%kdiff3.exe
- Example target on left arguments:
"targetFile.txt" "tempFile.txt" --cs CreateBakFiles=0
- Example target on right arguments:
"tempFile.txt" "targetFile.txt" --cs CreateBakFiles=0
- Scanned paths:
- /Applications/kdiff3.app/Contents/MacOS/kdiff3
- %PATH%kdiff3
- Cost: Requires Excel installed
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: False
- Use shell execute: False
- Create no window: True
- Environment variable for custom install location: DiffEngine_MsExcelDiff
- Supported binaries: .xls, .xlsx
Use tool order to prioritise MsExcelDiff over other tools.
DiffTools.UseOrder(DiffTool.MsExcelDiff);
- Install via dotnet tool install -g MsExcelDiff
- Requires Spreadsheet Compare (Office Professional Plus / Microsoft 365 Apps for Enterprise)
- Uses Microsoft's Spreadsheet Compare to show differences between workbooks
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Scanned paths:
- %USERPROFILE%\.dotnet\tools\diffexcel.exe
- %PATH%diffexcel.exe
- Cost: Requires Word installed
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: False
- Use shell execute: False
- Create no window: True
- Environment variable for custom install location: DiffEngine_MsWordDiff
- Supported binaries: .doc, .docx
Use tool order to prioritise MsWordDiff over other tools.
DiffTools.UseOrder(DiffTool.MsWordDiff);
- Install via dotnet tool install -g MsWordDiff
- Uses Word's built-in document comparison feature
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Scanned paths:
- %USERPROFILE%\.dotnet\tools\diffword.exe
- %PATH%diffword.exe
- Cost: Free with option to sponsor
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_Neovim
- Supported binaries: .svg
Use tool order to prioritise Neovim over other tools.
DiffTools.UseOrder(DiffTool.Neovim);
- Example target on left arguments:
-d "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
-d "tempFile.txt" "targetFile.txt"
- Scanned paths:
- %ProgramFiles%\Neovim\bin\nvim.exe
- %ProgramW6432%\Neovim\bin\nvim.exe
- %ProgramFiles(x86)%\Neovim\bin\nvim.exe
- %PATH%nvim.exe
- Example target on left arguments:
-d "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
-d "tempFile.txt" "targetFile.txt"
- Example target on left arguments:
-d "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
-d "tempFile.txt" "targetFile.txt"
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_P4Merge
- Supported binaries: .bmp, .gif, .jpeg, .jpg, .pbm, .pgm, .png, .ppm, .svg, .tif, .tiff, .xbm, .xpm
Use tool order to prioritise P4Merge over other tools.
DiffTools.UseOrder(DiffTool.P4Merge);
- Example target on left arguments for text:
-C utf8-bom "targetFile.txt" "tempFile.txt"
- Example target on right arguments for text:
-C utf8-bom "tempFile.txt" "targetFile.txt"
- Example target on left arguments for binary:
"targetFile.png" "tempFile.png"
- Example target on right arguments for binary:
"tempFile.png" "targetFile.png"
- Scanned paths:
- %ProgramFiles%\Perforce\p4merge.exe
- %ProgramW6432%\Perforce\p4merge.exe
- %ProgramFiles(x86)%\Perforce\p4merge.exe
- %PATH%p4merge.exe
- Example target on left arguments for text:
-C utf8-bom "targetFile.txt" "tempFile.txt"
- Example target on right arguments for text:
-C utf8-bom "tempFile.txt" "targetFile.txt"
- Example target on left arguments for binary:
"targetFile.png" "tempFile.png"
- Example target on right arguments for binary:
"tempFile.png" "targetFile.png"
- Scanned paths:
- /Applications/p4merge.app/Contents/MacOS/p4merge
- %PATH%p4merge
- Example target on left arguments for text:
-C utf8-bom "targetFile.txt" "tempFile.txt"
- Example target on right arguments for text:
-C utf8-bom "tempFile.txt" "targetFile.txt"
- Example target on left arguments for binary:
"targetFile.png" "tempFile.png"
- Example target on right arguments for binary:
"tempFile.png" "targetFile.png"
- Cost: Paid with free option for OSS
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_Rider
- Supported binaries: .svg
Use tool order to prioritise Rider over other tools.
DiffTools.UseOrder(DiffTool.Rider);
- Example target on left arguments:
diff "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
diff "tempFile.txt" "targetFile.txt"
- Scanned paths:
- %LOCALAPPDATA%\Programs\Rider*\bin\rider64.exe
- %ProgramFiles%\JetBrains\JetBrains Rider *\bin\rider64.exe
- %ProgramW6432%\JetBrains\JetBrains Rider *\bin\rider64.exe
- %ProgramFiles(x86)%\JetBrains\JetBrains Rider *\bin\rider64.exe
- %PATH%rider.cmd
- Example target on left arguments:
diff "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
diff "tempFile.txt" "targetFile.txt"
- Scanned paths:
- /Applications/Rider.app/Contents/MacOS/rider
- /usr/local/bin/rider
- %PATH%rider
- Example target on left arguments:
diff "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
diff "tempFile.txt" "targetFile.txt"
- Scanned paths:
- %HOME%/.local/share/JetBrains/Toolbox/apps/rider/bin/rider.sh
- %PATH%rider.sh
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_TkDiff
- Supported binaries: .svg
Use tool order to prioritise TkDiff over other tools.
DiffTools.UseOrder(DiffTool.TkDiff);
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Scanned paths:
- /Applications/TkDiff.app/Contents/MacOS/tkdiff
- %PATH%tkdiff
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: False
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_TortoiseGitIDiff
- Supported binaries: .bmp, .gif, .ico, .jpeg, .jpg, .png, .tif, .tiff
Use tool order to prioritise TortoiseGitIDiff over other tools.
DiffTools.UseOrder(DiffTool.TortoiseGitIDiff);
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Scanned paths:
- %ProgramFiles%\TortoiseGit\bin\TortoiseGitIDiff.exe
- %ProgramW6432%\TortoiseGit\bin\TortoiseGitIDiff.exe
- %ProgramFiles(x86)%\TortoiseGit\bin\TortoiseGitIDiff.exe
- %PATH%TortoiseGitIDiff.exe
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_TortoiseGitMerge
- Supported binaries: .bin, .svg
Use tool order to prioritise TortoiseGitMerge over other tools.
DiffTools.UseOrder(DiffTool.TortoiseGitMerge);
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Scanned paths:
- %ProgramFiles%\TortoiseGit\bin\TortoiseGitMerge.exe
- %ProgramW6432%\TortoiseGit\bin\TortoiseGitMerge.exe
- %ProgramFiles(x86)%\TortoiseGit\bin\TortoiseGitMerge.exe
- %PATH%TortoiseGitMerge.exe
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: False
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_TortoiseIDiff
- Supported binaries: .bmp, .gif, .ico, .jpeg, .jpg, .png, .tif, .tiff
Use tool order to prioritise TortoiseIDiff over other tools.
DiffTools.UseOrder(DiffTool.TortoiseIDiff);
- Example target on left arguments:
/left:"targetFile.txt" /right:"tempFile.txt"
- Example target on right arguments:
/left:"tempFile.txt" /right:"targetFile.txt"
- Scanned paths:
- %ProgramFiles%\TortoiseSVN\bin\TortoiseIDiff.exe
- %ProgramW6432%\TortoiseSVN\bin\TortoiseIDiff.exe
- %ProgramFiles(x86)%\TortoiseSVN\bin\TortoiseIDiff.exe
- %PATH%TortoiseIDiff.exe
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_TortoiseMerge
- Supported binaries: .svg
Use tool order to prioritise TortoiseMerge over other tools.
DiffTools.UseOrder(DiffTool.TortoiseMerge);
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Scanned paths:
- %ProgramFiles%\TortoiseSVN\bin\TortoiseMerge.exe
- %ProgramW6432%\TortoiseSVN\bin\TortoiseMerge.exe
- %ProgramFiles(x86)%\TortoiseSVN\bin\TortoiseMerge.exe
- %PATH%TortoiseMerge.exe
- Cost: Free with option to donate
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_Vim
- Supported binaries: .svg
Use tool order to prioritise Vim over other tools.
DiffTools.UseOrder(DiffTool.Vim);
- Example target on left arguments:
-d "targetFile.txt" "tempFile.txt" -c "setl autoread | setl nobackup | set noswapfile"
- Example target on right arguments:
-d "tempFile.txt" "targetFile.txt" -c "setl autoread | setl nobackup | set noswapfile"
- Scanned paths:
- %ProgramFiles%\Vim\*\vim.exe
- %ProgramW6432%\Vim\*\vim.exe
- %ProgramFiles(x86)%\Vim\*\vim.exe
- %PATH%vim.exe
- Example target on left arguments:
-d "targetFile.txt" "tempFile.txt" -c "setl autoread | setl nobackup | set noswapfile"
- Example target on right arguments:
-d "tempFile.txt" "targetFile.txt" -c "setl autoread | setl nobackup | set noswapfile"
- Scanned paths:
- /Applications/MacVim.app/Contents/bin/mvim
- %PATH%mvim
- Cost: Free with option to donate
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_WinMerge
- Supported binaries: .bin, .bmp, .bw, .cut, .dds, .exr, .g3, .gif, .hdp, .hdr, .ico, .iff, .j2c, .j2k, .jif, .jng, .jp2, .jpe, .jpeg, .jpg, .jxr, .koa, .lbm, .mng, .pbm, .pcd, .pct, .pcx, .pfm, .pgm, .pic, .pict, .png, .ppm, .psd, .ras, .rgb, .rgba, .sgi, .svg, .targa, .tga, .tif, .tiff, .wap, .wbm, .wbmp, .wdp, .webp, .xbm, .xpm
Use tool order to prioritise WinMerge over other tools.
DiffTools.UseOrder(DiffTool.WinMerge);
- Command line reference.
- /u Prevents WinMerge from adding paths to the Most Recently Used (MRU) list.
- /wl Opens the left side as read-only.
- /dl and /dr Specifies file descriptions in the title bar.
- /e Enables close with a single Esc key press.
- /cfg Backup/EnableFile=0 disable backup files.
- Example target on left arguments:
/u /wr /e "targetFile.txt" "tempFile.txt" /dl "targetFile.txt" /dr "tempFile.txt" /cfg Backup/EnableFile=0
- Example target on right arguments:
/u /wl /e "tempFile.txt" "targetFile.txt" /dl "tempFile.txt" /dr "targetFile.txt" /cfg Backup/EnableFile=0
- Scanned paths:
- %ProgramFiles%\WinMerge\WinMergeU.exe
- %ProgramW6432%\WinMerge\WinMergeU.exe
- %ProgramFiles(x86)%\WinMerge\WinMergeU.exe
- %LocalAppData%\Programs\WinMerge\WinMergeU.exe
- %PATH%WinMergeU.exe
- Cost: Paid
- Is MDI: True
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_AraxisMerge
- Supported binaries: .bmp, .dib, .emf, .gif, .j2c, .j2k, .jif, .jp2, .jpc, .jpeg, .jpg, .jpx, .pbm, .pcx, .pgm, .png, .ppm, .ras, .svg, .tga, .tif, .tiff, .wmf
Use tool order to prioritise AraxisMerge over other tools.
DiffTools.UseOrder(DiffTool.AraxisMerge);
- Example target on left arguments:
/nowait "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
/nowait "tempFile.txt" "targetFile.txt"
- Scanned paths:
- %ProgramFiles%\Araxis\Araxis Merge\Compare.exe
- %ProgramW6432%\Araxis\Araxis Merge\Compare.exe
- %ProgramFiles(x86)%\Araxis\Araxis Merge\Compare.exe
- %PATH%Compare.exe
- Example target on left arguments:
-nowait "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
-nowait "tempFile.txt" "targetFile.txt"
- Scanned paths:
- /Applications/Araxis Merge.app/Contents/Utilities/compare
- %PATH%compare
- Cost: Free and Paid
- Is MDI: True
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: False
- Create no window: False
- Environment variable for custom install location: DiffEngine_Cursor
- Supported binaries: .bin, .svg
Use tool order to prioritise Cursor over other tools.
DiffTools.UseOrder(DiffTool.Cursor);
- Example target on left arguments:
--diff "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
--diff "tempFile.txt" "targetFile.txt"
- Scanned paths:
- %LocalAppData%\Programs\cursor\Cursor.exe
- %ProgramFiles%\Cursor\Cursor.exe
- %ProgramW6432%\Cursor\Cursor.exe
- %ProgramFiles(x86)%\Cursor\Cursor.exe
- %PATH%Cursor.exe
- Example target on left arguments:
--diff "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
--diff "tempFile.txt" "targetFile.txt"
- Scanned paths:
- /Applications/Cursor.app/Contents/MacOScursor
- %PATH%cursor
- Example target on left arguments:
--diff "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
--diff "tempFile.txt" "targetFile.txt"
- Cost: Free
- Is MDI: True
- Supports auto-refresh: False
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_Meld
- Supported binaries: .svg
Use tool order to prioritise Meld over other tools.
DiffTools.UseOrder(DiffTool.Meld);
- While Meld is not MDI, it is treated as MDI since it uses a single shared process to managing multiple windows. As such it is not possible to close a Meld merge process for a specific diff. Vote for this feature
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Scanned paths:
- %LOCALAPPDATA%\Programs\Meld\meld.exe
- %ProgramFiles%\Meld\meld.exe
- %ProgramW6432%\Meld\meld.exe
- %ProgramFiles(x86)%\Meld\meld.exe
- %PATH%meld.exe
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Scanned paths:
- /Applications/meld.app/Contents/MacOS/meld
- %PATH%meld
- Example target on left arguments:
"targetFile.txt" "tempFile.txt"
- Example target on right arguments:
"tempFile.txt" "targetFile.txt"
- Cost: Paid
- Is MDI: True
- Supports auto-refresh: False
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_SublimeMerge
- Supported binaries: .svg
Use tool order to prioritise SublimeMerge over other tools.
DiffTools.UseOrder(DiffTool.SublimeMerge);
- While SublimeMerge is not MDI, it is treated as MDI since it uses a single shared process to managing multiple windows. As such it is not possible to close a Sublime merge process for a specific diff. Vote for this feature
- Example target on left arguments:
mergetool "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
mergetool "tempFile.txt" "targetFile.txt"
- Scanned paths:
- %ProgramFiles%\Sublime Merge\smerge.exe
- %ProgramW6432%\Sublime Merge\smerge.exe
- %ProgramFiles(x86)%\Sublime Merge\smerge.exe
- %PATH%smerge.exe
- Example target on left arguments:
mergetool "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
mergetool "tempFile.txt" "targetFile.txt"
- Scanned paths:
- /Applications/Sublime Merge.app/Contents/SharedSupport/bin/smerge
- /Applications/smerge.app/Contents/MacOS/smerge
- %PATH%smerge
- Example target on left arguments:
mergetool "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
mergetool "tempFile.txt" "targetFile.txt"
- Cost: Paid and free options
- Is MDI: True
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: True
- Create no window: False
- Environment variable for custom install location: DiffEngine_VisualStudio
- Supported binaries: .svg
Use tool order to prioritise VisualStudio over other tools.
DiffTools.UseOrder(DiffTool.VisualStudio);
- Example target on left arguments:
/diff "targetFile.txt" "tempFile.txt" "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
/diff "tempFile.txt" "targetFile.txt" "tempFile.txt" "targetFile.txt"
- Scanned paths:
- %ProgramFiles%\Microsoft Visual Studio\*\Preview\Common7\IDE\devenv.exe
- %ProgramW6432%\Microsoft Visual Studio\*\Preview\Common7\IDE\devenv.exe
- %ProgramFiles(x86)%\Microsoft Visual Studio\*\Preview\Common7\IDE\devenv.exe
- %ProgramFiles%\Microsoft Visual Studio\*\Community\Common7\IDE\devenv.exe
- %ProgramW6432%\Microsoft Visual Studio\*\Community\Common7\IDE\devenv.exe
- %ProgramFiles(x86)%\Microsoft Visual Studio\*\Community\Common7\IDE\devenv.exe
- %ProgramFiles%\Microsoft Visual Studio\*\Professional\Common7\IDE\devenv.exe
- %ProgramW6432%\Microsoft Visual Studio\*\Professional\Common7\IDE\devenv.exe
- %ProgramFiles(x86)%\Microsoft Visual Studio\*\Professional\Common7\IDE\devenv.exe
- %ProgramFiles%\Microsoft Visual Studio\*\Enterprise\Common7\IDE\devenv.exe
- %ProgramW6432%\Microsoft Visual Studio\*\Enterprise\Common7\IDE\devenv.exe
- %ProgramFiles(x86)%\Microsoft Visual Studio\*\Enterprise\Common7\IDE\devenv.exe
- %PATH%devenv.exe
- Cost: Free
- Is MDI: True
- Supports auto-refresh: True
- Supports text files: True
- Use shell execute: False
- Create no window: False
- Environment variable for custom install location: DiffEngine_VisualStudioCode
- Supported binaries: .bin, .svg
Use tool order to prioritise VisualStudioCode over other tools.
DiffTools.UseOrder(DiffTool.VisualStudioCode);
- Command line reference
- When a change is accepted by editing in the diff view, VS Code saves the file using files.eol (crlf on Windows by default), which can change its line endings. Consumers that require a specific line ending (for example Verify, which rejects a verified file containing crlf) can break. Install the EditorConfig extension to honor end_of_line from .editorconfig on save, or set "files.eol": "\n".
- Example target on left arguments:
--diff "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
--diff "tempFile.txt" "targetFile.txt"
- Scanned paths:
- %LocalAppData%\Programs\Microsoft VS Code\bin\code.cmd
- %ProgramFiles%\Microsoft VS Code\bin\code.cmd
- %ProgramW6432%\Microsoft VS Code\bin\code.cmd
- %ProgramFiles(x86)%\Microsoft VS Code\bin\code.cmd
- %PATH%code.cmd
- Example target on left arguments:
--diff "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
--diff "tempFile.txt" "targetFile.txt"
- Scanned paths:
- /Applications/Visual Studio Code.app/Contents/Resources/app/bin/code
- %PATH%code
- Example target on left arguments:
--diff "targetFile.txt" "tempFile.txt"
- Example target on right arguments:
--diff "tempFile.txt" "targetFile.txt"