比较Visual Studio中的两个文件

Lib*_*tal 401 comparison diff compare file visual-studio

我在VS 2012中看到了新的比较工具,用于比较两个文件或两个版本的文件.我喜欢.但是当我试图找到它时我不能因为我不使用TFS.有没有办法如何比较VS中内置功能但没有TFS的两个文件?

Vla*_*kov 771

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

使用Visual Studio命令窗口中的Tools.DiffFiles

  • 为什么VS UI中隐藏了此功能?这是比较两个文件最简单有效的方法...... (112认同)
  • 对于那些不熟悉Visual Studio的人,可以通过以下方式打开命令窗口:查看>其他Windows>命令窗口(VS Pro 2013)或使用CTRL + ALT + A (72认同)
  • 这样一个耻辱VS没有这个非常基本功能的菜单项.许多IDE /编辑都这样做. (32认同)
  • 这个差异工具是否提供任何有用的功能,如复制到左边,复制到右边等等?当我使用服务器版本区分工作副本时,我有时希望撤消一些更改并且必须手动复制粘贴. (14认同)
  • **注意:**在Visual Studio 2015中,您可以在此处找到它:**查看 - >工具栏 - >比较文件**.只需在快速启动窗口中键入"比较",您就可以添加它. (11认同)
  • 如果路径有空格,则可以包装整个路径,也可以只包含引号中带空格的零件. (7认同)
  • 哇太棒了!我多年来一直在使用VStudio,我从来不知道有一个差异窗口!我总是拿第三方工具.他们为什么要隐藏这么重要的功能? (4认同)
  • »Tools.DiffFiles«对我不起作用!VS只是声明»命令[...]无效«.我认为这是一个语言问题,因为我有一个德语版的Visual Studio 2013.工具在德语中被称为"Extras"(根本没有任何工具!).但是»Extras.DiffFiles«也行不通.有谁知道德国版本是什么,或者有谁知道不同的原因,它对我不起作用? (3认同)
  • 这在 vs 2010 中不起作用,即使它做了它仍然作为答案很糟糕。没有内置用于比较文件的工具。这是什么半生不熟的IDE BS?我不能高亮显示 2 个文件并区分它们 WTF? (2认同)
  • @full_prog_full`devenv.exe`将从系统命令提示符(`cmd.exe`)或Windows"运行"对话框(`Win + R`)调用,而不是从Visual Studio调用.如果Visual Studio已在运行,请在其"命令"窗口中使用"Tools.DiffFiles". (2认同)
  • @Matt 如何实际使用它?我尝试按 Ctrl+单击来选择两个选项卡,我什至尝试并排排列,但它不起作用...... (2认同)
  • @VladimirReshetnikov 啊,我明白了。我原本打算询问如何从 GUI 本身做到这一点,但我想为没有说清楚而道歉。谢谢你!我最终使用了命令窗口中的 DiffFiles 命令 (2认同)

Jar*_*das 77

您可以从Visual Studio库中尝试VSCommands扩展. 最新版本允许您选择两个文件并进行比较:

在此输入图像描述 在此输入图像描述

  • VSCommands 14在VS 2015 Update 1社区中的屏幕截图中不添加任何项目 (3认同)

Mat*_*att 67

受上面接受的答案的启发,我发现了一种非常舒适的方法,您可以通过拖放"发送到"上下文菜单立即使用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'
Run Code Online (Sandbox Code Playgroud)

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

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

  2. 无论是创建一个快捷方式命名为"文件比较"VS_FileCompare.cmd,并将其放置在在桌面上(如下面的动画中使用),所以它总是可用的拖放文件到或直接放在桌面上的批处理文件.就这样!

用法:

  1. 通过+ 打开Windows资源管理器WinE
  2. 在资源管理器中选择要比较的两个文件
  3. 拖放它们,如下面的动画所示: DragDropDemo

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

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


替代方式:SendTo上下文菜单

以下是您可以使用批处理文件的替代方法.它允许使用上下文菜单的Send To文件夹来比较文件.

制备:

  1. 将快捷方式放入SendTo文件夹.通过+ 打开Windows资源管理器WinE
  2. 打开的SendTo输入文件夹 VS_FileCompare.cmd到文件浏览器的地址栏(如描述在这里).然后,将准备好的快捷方式放入此文件夹中.

用法:

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

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


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


*) 脚注:因为VS_FileCompare.cmd(路径shell:sendto)根据您的Visual Studio版本而有所不同,我将介绍如何找到它(Windows 10):

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

  • 这确实是一个非常好的和详尽的答案,绝对应该投票赞成。我来自不断寻找开箱即用答案的小组,即使答案被标记在线程中也是如此,所以我绝对会给它一个提示。 (4认同)
  • @DivTiwari - 谢谢,很高兴听到这个消息! (3认同)
  • 好的!对此进行投票……只是喜欢这个解决方案的“黑客”性质。感谢您的分享。 (3认同)
  • 那太棒了,就像一个魅力。非常感谢朋友 (2认同)
  • 从 Visual Studio 2017 开始,有一个命令行工具可以查找最新安装的 VS 的路径:`C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe`。在“for”循环中解析其输出将为您提供 Visual Studio 的路径。 (2认同)

小智 24

我一直是WinMerge的粉丝,WinMerge是一个开源项目.您可以非常轻松地将其插入Visual Studio.

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

会告诉你如何做到这一点

  • WinMerge的唯一缺点是它有限地识别变化(例如空格,线条分成更多行等) (2认同)

Ste*_*han 22

还有一个名为CompareFiles的Visual Studio扩展,除了将"Compare Files"条目添加到解决方案资源管理器上下文菜单之外,它什么都不做.它调用内置的Visual Studio diff工具.

万一有人(像我一样)不想安装像VSCommands这样的一体化扩展......


Ham*_*lla 18

在Visual Studio 2012,2013,2015中,您也可以使用Web Essentials执行此操作,只需右键单击文件,然后从上下文菜单> Web Essential >> Diff selected files:

编辑:它现在作为单独的扩展提供

在此输入图像描述


Cha*_*dra 16

如果你安装了VS,你也可以打电话

"%VS110COMNTOOLS%..\IDE\vsdiffmerge.exe" "File1" "File2"
Run Code Online (Sandbox Code Playgroud)

或者对于VS 2013

"%VS120COMNTOOLS%..\IDE\vsdiffmerge.exe" "File1" "File2"
Run Code Online (Sandbox Code Playgroud)

资料来源:http://roadtoalm.com/2013/10/22/use-visual-studio-as-your-diff-and-merging-tool-for-local-files/


ast*_*ght 16

Command Window(CTRL + ALT + A)

Tools.DiffFiles File1 File2
Run Code Online (Sandbox Code Playgroud)

  • 也许-尽管就个人而言,我宁愿使用GUI来选择文件,而不是在任何情况下都必须键入构造两个路径-我的意思是不是1984年。 (2认同)
  • 谢谢,这是迄今为止最简单的解决方案!@nico我真的不明白你的观点,你是一个程序员(也输入代码)还是你只是想使用 Visual Studio 来比较文件? (2认同)

小智 13

对于 Visual Studio 2019,文件差异插件允许比较不同项目中的文件:

在此处输入图片说明

在此处输入图片说明

您可以从这里安装它:

在此处输入图片说明

老的:

对于 Visual Studio 2017,安装 *[FileComparer2017][4]*

问题是不能比较不同项目中的文件,但是可以复制同一个项目中的文件来比较...

文件差异

  • 不幸的是,这在没有解决方案的情况下尝试比较两个文件时不起作用(例如,当您在文件夹模式下打开 VS2017 时:打开 - 文件夹) (2认同)

spo*_*ahn 11

Visual Studio的扩展:文件迥异通过的Mads克里斯滕森

比较文件截图

  • 这个答案需要高得多。这是此问题的唯一相关答案。任何来到这个帖子的人都在寻找这个,而不是别的。我花了几个小时试图找到这个扩展,因为前两个答案绝对没用,所以我认为整个页面都没用......因为我不熟悉术语“diff”并使用关键字“compare”,所以我已经通过了挑战。 (4认同)
  • 我完全同意@GappyHilmore 的观点。恢复为插件时,下载和安装只需要一分钟,并且完全可以满足每个人的需求。只需在解决方案资源管理器中选择两个文件,然后从上下文菜单中选择“比较文件...”。 (2认同)

小智 8

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

\n
    \n
  1. Command Window通过热键Ctrl+WA菜单查看\xe2\x86\x92其他窗口\xe2\x86\x92命令窗口打开
  2. \n
  3. 输入命令Tools.DiffFiles "FirstFile.cs" "SecondFile.cs"
  4. \n
\n