比较Visual Studio中的两个文件


429

我在VS 2012中看到了新的比较工具,用于比较两个文件或文件的两个版本。我喜欢。但是,当我尝试找到它时,因为我不使用TFS而无法找到它。有没有一种方法可以只比较两个具有VS中内置功能但没有TFS的文件?


1
正如进一步使用注释:如果您正在使用vs2015工作,使用此链接:visualstudio.com/en-us/docs/tfvc/compare-files
Elnaz

请注意,这仍然适用于VS2017。因此,我提供了一个如何轻松处理此问题的答案
马特

2
没有一个答案可以比较已经在Visual Studio中打开的两个文件。
user3454439


在VS2017和VS2019中,即使比较文件工具栏也已打开,也不知道如何使用...现在使用VSCode,只需打开两个文件并选择两者,然后选择上下文菜单->比较即可。
jw_

Answers:


808

您可以devenv.exe /diff list1.txt list2.txt从命令提示符下调用,或者,如果已经在运行Visual Studio实例,则可以Tools.DiffFiles在“命令”窗口中键入,并以方便的文件名完成:

从Visual Studio命令窗口使用Tools.DiffFiles


15
此差异工具是否提供任何有用的功能,例如向左复制,向右复制等?当我将工作副本与服务器版本进行比较时,有时我希望撤消某些更改,并且必须执行手动复制粘贴。
塞缪尔

118
为什么在VS UI中隐藏了此功能?这是比较两个文件的最简单有效的方法...
eka808 2014年

76
对于那些不熟悉Visual Studio的用户,可以通过以下方式打开“命令窗口”:查看>其他Windows>命令窗口(VS Pro 2013)或使用CTRL + ALT + A
Cleanshooter 2014年

35
如此可耻的VS没有此基本功能的菜单项。许多IDE的/编辑器都这样做。
2014年

15
注意:在Visual Studio 2015中,您可以在这里找到它:视图->工具栏->比较文件。只需在快速启动窗口中输入“比较”,即可添加它。
马特

84

受到上面接受的答案的启发,我找到了一种非常舒适的方法,您可以通过拖放或通过“发送到”上下文菜单立即使用Visual Studio比较两个文件。它只需要做一点准备,您需要做一次,然后它就像瑞士军刀一样有用。

Visual Studio已经拥有您所需的一切,只需一些配置步骤即可使它起作用:

使用拖放进行文件比较

准备:

1. 使用您喜欢的文本编辑器创建一个新的批处理文件。输入以下内容:

@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'

您可能会注意到,我已经颠倒了批处理中的%1%2参数。这是因为我注意到文件浏览器将第2个文件作为第一个参数传递,然后将第一个文件作为第二个参数传递。

2.保存此代码VS_FileCompare.cmd以使用它,vspath如果需要,请进行修改以匹配位置devenv.exe(取决于您当前使用的Visual Studio版本,请参见脚注*)

3.创建一个名为“文件比较”快捷方式,然后放置在桌面上VS_FileCompare.cmd(如下面的动画中所使用),因此始终可以将文件拖放到其上或直接将批处理文件放置在桌面上。就这样!

用法:

  1. 通过+ 打开Windows资源管理器WinE
  2. 选择两个文件以在资源管理器中进行比较
  3. 如下图所示,将它们拖放: DragDropDemo

  4. 几秒钟后(取决于Visual Studio的启动时间),结果将显示在Visual Studio中: Visual Studio视图

注意:如果Visual Studio已打开,则不会造成损害。在这种情况下,它将在运行的Visual Studio实例中打开一个新窗口。因此,您可以比较多个文件对,但是请确保一次仅选择2个文件。


另一种方法:SendTo上下文菜单

这是替代方法,您可以使用VS_FileCompare.cmd上面部分中提到的批处理文件。它允许使用上下文菜单的“发送到”文件夹来比较文件。

制备:

  1. 为批处理文件创建一个快捷方式“ Compare2Files VS”VS_FileCompare.cmd,并将其复制到SendTo文件夹中。通过+ 打开Windows资源管理器WinE
  2. 打开的SendTo输入文件夹 shell:sendto到文件浏览器的地址栏(如描述在这里)。然后,将准备好的快捷方式放入此文件夹。

用法:

  1. 通过+ 打开Windows资源管理器WinE
  2. 选择两个文件以在资源管理器中进行比较
  3. 假设批处理文件的快捷方式VS_FileCompare.cmd名为“ Compare2Files VS”,则可以选择两个文件,右键单击并选择Send To-> Compare2Files VS以调用比较,如下所示: 发送至

  4. 几秒钟后(取决于Visual Studio的启动时间),结果将显示在Visual Studio中: Visual Studio视图


MSDN参考:
- DIFF窗口的使用
- Visual Studio的DIFF参数


*) 脚注:由于vsPath(的路径DEVENV.exe)随Visual Studio版本的不同而不同,因此,我正在描述如何找到它(Windows 10):

  1. Windows开始菜单中 Windows图标小,找到Visual Studio图标。 Visual Studio图标小
  2. 右键单击以打开上下文菜单。选择更多>打开文件位置
    Windows资源管理器将打开,并突出显示Visual Studio快捷方式。
  3. 右键单击Visual Studio,然后选择“ 属性”。
  4. 在属性对话框中,您可以在“目标:”中找到路径 VSProperties

5
这确实是一个非常好的和详尽的答案,绝对应该投票赞成。我来自不断寻找开箱即用答案的小组,即使答案被标记在线程中也是如此,所以我绝对会给它一个提示。
Div Tiwari

1
@DivTiwari-谢谢你,很高兴听到这个消息!
马特

编辑:这是VS 2013的脚本,再次感谢。@echo off setlocal set vspath = C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ IDE start“比较文件” / B / MIN“%vspath%\ devenv.exe” / diff%2%1首先: '%2'第二: '%1'
费尔南多咀

1
那真是太棒了,就像一个魅力。非常感谢队友
Sabbir哈桑

1
真好!投票赞成这个。只是喜欢这种解决方案的“骇人”性质。感谢您的分享。
Leo Gurdian



24

还有一个名为CompareFiles的Visual Studio扩展,除了将“比较文件”条目添加到解决方案资源管理器上下文菜单,它什么也不做。它调用内置的Visual Studio差异工具。

以防万一(像我一样)不想安装像VSCommands这样的多合一扩展...


1
注意:此扩展仅适用于VS2012,但是您可以编辑清单文件以轻松支持VS2013-有关详细信息,请参阅我在扩展的“问答”选项卡上的评论。(我需要此功能,但由于获得了许可,因此无法使用VSCommands的免费版本)
James S

Visual Studio比较工具可用于2013年,visualstudiogallery.msdn.microsoft.com /…
对齐

23

VS2019->View->Other Windows->Command Window (Ctrl + Alt + A)

Tools.DiffFiles File1 File2

这与另一个答案相同
niico

5
也许-尽管就个人而言,我宁愿使用GUI来选择文件,也不愿键入必须在任何情况下构造两个路径的方法-我的意思是不是1984
。– niico



8

Visual Studio Code中,您可以:

  • 转到 Explorer
  • 右键单击要比较的第一个文件
  • 选择 Select for compare
  • 右键单击要比较的第二个文件
  • 选择 Compare with '[NAME OF THE PREVIOUSLY SELECTED FILE]'

就像您提到的那样,这在Visual Studio Code中效果很好,但遗憾的是,在Visual Studio Enterprise(或Professional)中却没有。
Eptin


4

更新:对于VS 2019 File Differ插件允许比较不同proyects中的文件 在此处输入图片说明

在此处输入图片说明

您可以从这里安装:

在此处输入图片说明

OLD: 对于VS 2017安装 https://marketplace.visualstudio.com/items?itemName=vs-publisher-457497.FileComparer2017

问题是您无法比较不同proyects中的文件,但可以将文件复制到同一项目中进行比较...

文件差异


1
不幸的是,当尝试在没有解决方案的情况下比较两个文件时,此方法不起作用(例如,当您以文件夹模式打开VS2017时:打开-文件夹)
Yury Kozlov

2

我也有这个问题。没有TFS,但是我发现本文很有帮助

具体地,步骤1b。

打开Visual Studio命令提示符,然后导航到Common7 / IDE文件夹并键入

tf diff /configure

0

Akhil Mittal的文件比较器VS扩展。出色的轻巧工具,可以完成工作。


0

比较任何两个文件并将其合并到一个文件中如果安装了Visual Studio(任何版本),则可以执行以下步骤。

步骤1:打开Visual Studio命令提示符。如果找不到Visual Studio命令提示符,则选择Visual Studio工具

开始-> Visual Studio命令提示符

在此处输入图片说明

在此处输入图片说明

步骤2:输入命令vsdiffmerge.exe

如果只需要比较,请忽略/ m开关。

语法1:
vsdiffmerge <文件1 > <文件2> <文件1 > <输出文件> / t / m

语法2:
vsdiffmerge <基本文件名> <比较文件名> <基本文件名> <输出文件名> / t / m

示例1:
vsdiffmerge test1.js test2.js test1.js output.js / t / m
示例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

在此处输入图片说明


步骤3:合并档案

在此处输入图片说明 请注意,如果该位置不存在文件名,则不会打开比较器。

您也可以在进行比较之前美化文件。在Visual Studio中,按Ctrl + K +D。

在线有很多美化网站。


0

Visual Studio代码对此非常有用-打开一个文件夹,右键单击两个文件并进行比较。


0

在Visual Studio中,可以使用Command Window然后调用Tools.DiffFiles命令来调用Diff

  1. Command Window通过热键Ctrl + W, A或菜单打开View -> Other Windows -> Command Window
  2. 输入命令 Tools.DiffFiles "FirstFile.cs" "SecondFile.cs"


-4

如果您使用的是TFS连接,则右键单击您需要比较的文件(通过源代码管理浏览器),它会为您显示一个这样的窗口- 在此处输入图片说明

现在,在“ Souce Path:”中更改源文件的路径,即可通过VS比较工具进行比较。

同样,您也可以比较文件夹,它可以一次比较一个文件夹的所有文件。


2
如果您阅读原始文章,他会特别指出:“有没有办法我可以只比较VS中具有内置功能但没有TFS的两个文件?” 您的答案要求他拥有TFS。
CigarDoug 2015年

虽然他尝试回答..虽然,他的尝试是错误的+1
Irf
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.