Libor Zapletal
Libor Zapletal

Reputation: 14102

Compare two files in Visual Studio

I saw the new comparison tool in Visual Studio 2012 for comparing two files or two versions of a file. I like it. But when I tried to find it I couldn't it, because I don't use TFS.

Is there a way how I can just compare two files with the built-in feature in Visual Studio (but without TFS)?

Upvotes: 553

Views: 531688

Answers (16)

Matt
Matt

Reputation: 27016

There are now 3 main options available to compare two files with Visual Studio:

I) Visual Studio 17.7.0 Preview 5 (and later)

Since Version 17.7.0 Preview 5.0 of Visual Studio, you can compare files using the context menu in the Solution Explorer.

Example:

Compare two files example

  1. Either you select one file and then select a second file via "Compare with..." in the context menu (left side of the screenshot)

  2. Or you select two files and then use "compare selected" in the context menu (right side of the screenshot)

(The 3rd option - mark it as "select for compare" also exists, but I doubt you would use it very often)

This is a great improvement!

However, in case you want to trigger file compare from outside of Visual Studio (drag & drop or via Windows file explorer's context menu), you can read the original answer I posted (below), which is now an alternative option you have (or the only option, if you're using older versions of Visual Studio).


Inspired by Vladimir Reshetnikov's answer above, I found a very comfortable way how you can instantly compare two files with Visual Studio by using drag and drop or via the "Send To" context menu. It only requires a little preparation which you need to do once and then it is useful like a Swiss army knife.

Visual Studio already has everything you need, and there are only some configuration steps required to make this working:

II) File compare using drag & drop

Preparation:

  1. Create a new batch file using your favorite text editor. Type the following:

    @echo off
    setlocal
    set vspath=C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE
    start "Compare files" /B /MIN "%vspath%\devenv.exe" /diff %2 %1 First:'%2' Second:'%1'
    

    You might notice that I have reversed the %1 and %2 parameters in the batch. This is because I noticed that the file explorer passes the second file as the first parameter, and then the first file as the second parameter.

  2. Save this code as VS_FileCompare.cmd to use it, and modify vspath if required to match the location of devenv.exe (depending on the Visual Studio version you're currently using, see footnote*) )

  3. Either create a shortcut named "File Compare" for VS_FileCompare.cmd and place it on the desktop (as used in the animation below), so it is always available to drag & drop files onto it or directly place the batch file on the desktop. That's all!

Usage:

  1. Open the Windows explorer via Win + E

  2. Select two files to compare in the explorer

  3. Drag and drop them as shown in the animation below:

    DragDropDemo

  4. After a few seconds (depending on the launch time of Visual Studio), the results will be shown in Visual Studio:

    Visual Studio View

Note: It does not harm if Visual Studio is already open. In this case it will just open up a new window within the running instance of Visual Studio. So you can compare multiple file pairs, but please ensure you have selected only two files at a time.


III) Alternative way: SendTo context menu

Here's an alternative how you can use the batch file VS_FileCompare.cmd mentioned in the section above. It allows to use the context menu's Send To folder to compare the files.

Preparation:

  1. Create a shortcut "Compare2Files VS" for the batch file VS_FileCompare.cmd and copy it into the SendTo folder. Open the Windows explorer via Win + E
  2. Open the SendTo folder by entering shell:sendto into the file explorer's address bar (as described here). Then, put the prepared shortcut into this folder.

Usage:

  1. Open the Windows explorer via Win + E

  2. Select two files to compare in the explorer

  3. Assuming the shortcut for the batch file VS_FileCompare.cmd is named "Compare2Files VS", you can select the two files, right-click and select Send To → Compare2Files VS to invoke the compare as shown below:

    SendTo

  4. After a few seconds (depending on the launch time of Visual Studio), the results will be shown in Visual Studio:

    Visual Studio View

HINT: If you like the SendTo folder approach, there is more you can do - for example you can open a command shell directly via SendTo and it starts with the right path (the path where the selected file resides). Look here to find out how to do that. You can even combine it with the script to gain elevated rights, with only a little extra effort.


MSDN References:


*) Footnote: Because vsPath (the path to DEVENV.exe) differs depending on your version of Visual Studio, I am describing how you can find it out (Windows 10):

  1. In the Windows start menu Windows Icon Small, locate the Visual Studio icon Visual Studio Icon Small

  2. Right-click to bring up the context menu. Select MoreOpen File Location.
    Windows Explorer opens with the Visual Studio shortcut highlighted.

  3. Right-Click on the Visual Studio and select Properties

  4. In the properties dialog, you can find the path in "Target:"

    VSProperties


Animations created with Screen to gif

Upvotes: 141

Jarek Kardas
Jarek Kardas

Reputation: 8455

You can try the VSCommands extension from Visual Studio Gallery.

The latest release allows you to select two files and compare them:

"compare files" option

compare tool example

Upvotes: 81

usefulBee
usefulBee

Reputation: 9702

An excellent lightweight tool that gets the job done is the File Comparer Visual Studio extension by Akhil Mittal.

Upvotes: 0

Timothy G.
Timothy G.

Reputation: 9165

With Visual Studio 2022 17.7 Preview 1, a new Compare Files option has been added to Solution Explorer.

In response to this highly upvoted ticket in Developer Community, you can now compare files in Solution Explorer

Right click on a file in solution explorer, and select "Select for Compare". Then, right click on the file you wish to compare to and select "Compare with {fileName}":

select for compare and compare with file options in solution explorer

This will open up the a diff comparison tab like so:

diff comparison tab showing compared files

Upvotes: 1

Allan Ridolfi
Allan Ridolfi

Reputation: 11

When using Visual Studio with a localized language, the commands you write in the CommandWindow must be also localized. For example, my VS2019 is in portuguese so, i have to write this command:

Ferramentas.CompararArquivos

enter image description here

You can show the CommandWindow (Janela de Comando in my case) through the menu View > Other Windows > Command Window or, in my case Exibir > Outras Janelas > Janela de Comando

enter image description here

Upvotes: 1

Kiryl Khadanovich
Kiryl Khadanovich

Reputation: 420

In Visual Studio, the diff can be called using the Command Window and then the Tools.DiffFiles command

  1. Open the Command Window by hotkeys Ctrl + W, A or by menu ViewOther WindowsCommand Window
  2. Enter command Tools.DiffFiles "FirstFile.cs" "SecondFile.cs"

Upvotes: 8

spottedmahn
spottedmahn

Reputation: 16031

Visual Studio extension: File Differ by Mads Kristensen

Compare files screenshot

Upvotes: 56

Zaha
Zaha

Reputation: 946

For Visual Studio 2019, the File Differ plugin allows to compare files in distinct projects:

Enter image description here

Enter image description here

You can install it from here:

Enter image description here

OLD:

For Visual Studio 2017, install *[FileComparer2017][4]*

The problem is that you can't compare files in different projects, but you can copy the files in the same project to compare...

File difference

Upvotes: 21

patrick
patrick

Reputation: 16979

(Command Window) (Ctrl + Alt + A):

Tools.DiffFiles File1 File2

Upvotes: 61

George
George

Reputation: 3020

To compare any two files and merge it to one file, here are the following steps you can follow if you have Visual Studio (any version) installed.

Step 1: Open the Visual Studio command prompt. If you do not find the Visual Studio command prompt then choose Visual Studio tools

Start → Visual Studio command prompt

Enter image description here

Enter image description here

Step 2: Enter the command vsdiffmerge.exe

Ignore the switch /m if you need just comparison.

Syntax 1:

vsdiffmerge <file1> <file2> <file1> <outputfile> /t /m

Syntax 2:

vsdiffmerge <basefilename> <CompareFilename> <basefilename> <OutputFilename> /t /m

Example 1:

vsdiffmerge test1.js test2.js test1.js output.js /t /m

Example 2:

vsdiffmerge.exe "C:\Users\livingston\Downloads\wa\wa\Files\pre\Test.js" "C:\Users\livingston\Downloads\wa\wa\Files\Prod\Test.js" "C:\Users\livingston\Downloads\wa\wa\Files\pre\Test.js" "C:\Users\livingston\Downloads\wa\wa\Files\output\samp.js" /t /m

Enter image description here

Step 3: Merge the files

Enter image description here

Please note that if file name does not exist in the location, it will not open the comparer.

Also you can beautify the file before you do the comparison. In Visual Studio, Ctrl + K + D.

There are a lot of beautifier sites available online.

Upvotes: 0

Arman Hamid Mosalla
Arman Hamid Mosalla

Reputation: 3355

In Visual Studio 2012, 2013, 2015, you can also do it with Web Essentials. Just right click the files and from the context menu → Web EssentialDiff selected files:

Enter image description here

It's also available as a separate extension.

Upvotes: 17

If you have Visual Studio installed, you could also call

"%VS110COMNTOOLS%..\IDE\vsdiffmerge.exe" "File1" "File2"

or for Visual Studio 2013:

"%VS120COMNTOOLS%..\IDE\vsdiffmerge.exe" "File1" "File2"

Source: Use Visual Studio as your Diff and Merging Tool for local files

Upvotes: 15

Stephan
Stephan

Reputation: 4247

There is also a Visual Studio extension called CompareFiles, which does nothing else but adding the "Compare Files" entry to the Solution Explorer context menu. It invokes the built-in Visual Studio diff tool.

Just in case that someone (like me) doesn't want to install an all-in-one extension like VSCommands...

Upvotes: 24

billb
billb

Reputation: 3619

I had this problem as well. No TFS, but I found the article Associate a file type with a file-comparison tool helpful.

Specifically, step 1b.

Open a Visual Studio command prompt and navigate to the Common7/IDE folder and type

tf diff /configure

Upvotes: 2

user1877337
user1877337

Reputation:

I have always been a fan of WinMerge which is an open source project. You can plug it into Visual Studio fairly easily.

http://blog.paulbouwer.com/2010/01/31/replace-diffmerge-tool-in-visual-studio-team-system-with-winmerge/

will show you how to do this

Upvotes: 25

You can invoke devenv.exe /diff list1.txt list2.txt from the Visual Studio Developer Command Prompt or, if a Visual Studio instance is already running, you can type Tools.DiffFiles in the Command window, with a handy file name completion:

Using Tools.DiffFiles from the Visual Studio Command window

Upvotes: 961

Related Questions