I saw new comparsion tool in VS 2012 for comparing two files or two versions of file. I like it. But when I tried to find it I can't because I don't use TFS. Is there a way how can I just compare two files with builtin feature in VS but without TFS?
问题:
回答1:
You can invoke devenv.exe /diff list1.txt list2.txt
from the 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:
回答2:
You can try VSCommands extension from Visual Studio Gallery. Latest release allows you to select two file and compare them:
回答3:
Inspired by the accepted 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.
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 (x86)\Microsoft Visual Studio\2017\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 2nd file as first parameter, then the 1st file as second parameter.
Save this code as
VS_FileCompare.cmd
to use it, modifyvspath
if required to match the location ofdevenv.exe
(depending on the Visual Studio version you're currently using, see footnote*) )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:
- Open the Windows explorer via Win + E
- Select two files to compare in the explorer
Drag and drop them as shown in the animation below:
After a few seconds (depending on the launch time of Visual Studio), the results will be shown in Visual Studio:
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 2 files at a time.
Alternative way: SendTo context menu
Here's an alternative how you can use the batch file. It allows to use the context menu's Send To folder to compare the files.
Preparation:
- Place the shortcut into the SendTo folder. Open the Windows explorer via Win + E
- 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:
- Open the Windows explorer via Win + E
- Select two files to compare in the explorer
Assuming the shortcut 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:
After a few seconds (depending on the launch time of Visual Studio), the results will be shown in Visual Studio:
MSDN References:
- Usage of diff window
- Visual Studio's Diff parameter
*) 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):
- In the Windows start menu , locate the Visual Studio icon
- Right-click to bring up the context menu. Select More > Open File Location.
Windows Explorer opens with the Visual Studio shortcut highlighted. - Right-Click on the Visual Studio and select Properties
- In the properties dialog, you can find the path in "Target:"
回答4:
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
回答5:
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...
回答6:
In Visual Studio 2012, 2013, 2015, you can also do it with Web Essentials, just right click the files and from context menu > Web Essential >> Diff selected files:
Edit: It's now available as a separate extension
回答7:
If you have VS installed, you could also call
"%VS110COMNTOOLS%..\IDE\vsdiffmerge.exe" "File1" "File2"
or for VS 2013
"%VS120COMNTOOLS%..\IDE\vsdiffmerge.exe" "File1" "File2"
Source: http://roadtoalm.com/2013/10/22/use-visual-studio-as-your-diff-and-merging-tool-for-local-files/
回答8:
Command Window
(CTRL+ALT+A)
Tools.DiffFiles File1 File2
回答9:
I had this problem as well. No TFS, but I found this article helpful.
Specifically, step 1b.
Open a Visual Studio command prompt and navigate to the Common7/IDE folder and type
tf diff /configure
回答10:
File Comparer VS Extension by Akhil Mittal. Excellent lightweight tool that gets the job done.
回答11:
In Visual Studio Code you can:
- Go to the
Explorer
- Right click the first file you want to compare
- Select
Select for compare
- Right click on the second file you want to compare
- Select
Compare with '[NAME OF THE PREVIOUSLY SELECTED FILE]'
回答12:
For VS 2017 Install https://marketplace.visualstudio.com/items?itemName=vs-publisher-457497.FileComparer2017
The problem is that you can't compare files in diferent proyects, but you can copy the files in the same project to compare...
回答13:
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 Visual studio command prompt. If you do not find visual studio command prompt then choose visual studio tools
Start -> Visual studio command prompt
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
Step 3: Merge the files
Please note that if file name does not exists 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 lot of beautifier sites available online.
回答14:
Visual Studio code is great for this - open a folder, right click both files and compare.
回答15:
I believe this to be one of the better extension for Visual Studio 2012, it's called Code Compare and can be found here.
回答16:
If you are working with TFS connected then right click on file which you need to compare (through source control explorer) and it presents you a window like this -
Now change path of source file in 'Souce Path:' and you get comparision through VS comparision tool.
Similarly you can compare folder also which compares all files of a folder at once.