我在Visual Studio 2012中看到了新的比较工具,用于比较两个文件或一个文件的两个版本。我喜欢它。但当我试图找到它时,我找不到它,因为我不使用TFS。

是否有一种方法,我可以比较两个文件的内置功能在Visual Studio(但没有TFS)?


当前回答

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

你可以从这里安装:

OLD:

对于Visual Studio 2017,安装*[FileComparer2017][4]* 问题是你不能比较不同项目中的文件,但是你可以复制同一个项目中的文件来比较…

其他回答

在Visual Studio 2012、2013、2015中,你也可以用Web Essentials来实现。只需右键单击文件,然后从上下文菜单→Web Essential→Diff所选文件:

它也可以作为一个单独的扩展。

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

Visual Studio已经有了你需要的一切,并且只需要一些配置步骤就可以使其工作:

文件比较使用拖放

准备:

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 second file as the first parameter, and then the first file as the second parameter. 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*) ) 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!

用法:

通过Win + E打开Windows资源管理器 在资源管理器中选择两个文件进行比较 拖放它们,如下图所示: 几秒钟后(取决于Visual Studio的启动时间),结果将在Visual Studio中显示:

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


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

下面是如何使用批处理文件VS_FileCompare的另一种方法。上面一节中提到的CMD。它允许使用上下文菜单的“发送到”文件夹来比较文件。

准备:

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

用法:

通过Win + E打开Windows资源管理器 在资源管理器中选择两个文件进行比较 假设批处理文件VS_FileCompare的快捷方式为。cmd被命名为"Compare2Files VS",你可以选择这两个文件,右键单击并选择Send To→Compare2Files VS来调用比较,如下所示: 几秒钟后(取决于Visual Studio的启动时间),结果将在Visual Studio中显示:

提示:如果你喜欢SendTo文件夹方法,你可以做更多的事情-例如,你可以直接通过SendTo打开一个命令shell,它以正确的路径开始(所选文件所在的路径)。看看这里,找到如何做到这一点。您甚至可以将它与脚本结合起来,以获得更高的权限,只需稍加额外的努力。


MSDN引用:

diff窗口的使用 Visual Studio的Diff参数


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

在Windows开始菜单中,找到Visual Studio图标 右键单击弹出上下文菜单。选择“更多→打开文件位置”。Windows资源管理器将以高亮显示的Visual Studio快捷方式打开。 右键单击Visual Studio并选择属性 在属性对话框中,你可以在“Target:”中找到路径。


用屏幕转gif创建的动画

Visual Studio扩展:Mads Kristensen的文件不同

在Visual Studio中,diff可以使用命令窗口和工具调用。DiffFiles命令

通过热键Ctrl + W、A或菜单View→其他窗口→命令窗口打开命令窗口 输入命令Tools。DiffFiles "FirstFile.cs" "SecondFile.cs"

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

以防有人(比如我)不想安装一个像VSCommands这样的一体化扩展…