Setting up WinMerge as the Visual Studio Merge and Diff-tool

Published on Monday, November 4, 2019

I've been a WinMerge user for years. Despite that work on the 2.x branch seemed to stop after the 2.14.0 release in 2013, I kept using it since it did all the things I needed it to do. However, there were a few annoying issues with certain compare scenarioshowever, so when all of sudden version 2.16.0 showed up, it was a welcome site.

The 2.16.0 version brought with it several new features, but I quickly noticed Visual Studio no longer opened it correctly when wanted to compare files. It turned out the addition of the 3-way compare/merge had changed the command line parameters. Reading up on WinMerge's Command Line interface and what Visual Studio can pass into a third party compare/merge tool, I got it working again.

Using the 32-bit version WinMergeU.exe is found

C:\Program Files (x86)\WinMerge\WinMergeU.exe

For Compare the Arguments should be

/e /u /wl /wr /dl %6 /dr %7 %1 %2

A screenshot of the Visual Studio Configure Tool modal window. Operation is set to "Compare", Command is set to the path to "WinMergeU.exe", and the arguments are set to "/e /u /wl /wr /dl %6 /dr %7 %1 %2"

and for Merge they should be

/e /u /wl /dl %6 /dr %7 %1 %2 /o %4

A screenshot of the Visual Studio Configure Tool modal window. Operation is set to "Merge", Command is set to the path to "WinMergeU.exe", and the arguments are set to "/e /u /wl /dl %6 /dr %7 %1 %2 /o %4"

Setting up External Tools for Compare and Merge in Visual Studio

So if the above looks great, but you have no idea on how to set it up, just open Visual Studio, click the Tools menu and select Options

Visual Studio Tools menu with Options selected

Then under Source Control, select Visual Studio Team Foundation Server and click Configure User Tools...

Configure User Tools location in Visual Studio Options

After that you can click Add and configure Compare and Merge described above.