比较Visual Studio中的两个文件

时间:2012-12-06 21:32:34

标签: visual-studio file compare comparison diff

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

20 个答案:

答案 0 :(得分:729)

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

Using Tools.DiffFiles from Visual Studio Command window

答案 1 :(得分:76)

您可以尝试VSCommands extension from Visual Studio GalleryLatest release允许您选择两个文件并进行比较:

enter image description here enter image description here

答案 2 :(得分:52)

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

使用drag&文件比较文件降

准备工作:

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参数。这是因为我注意到文件浏览器将第二个文件作为第一个参数传递,然后将第一个文件作为第二个参数。

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

  2. VS_FileCompare.cmd创建名为“文件比较”快捷方式,并将其放在桌面上(如用于下面的动画),所以它总是可用于拖动和放大将文件拖放到其上或直接将批处理文件放在桌面上。这就是全部!

  3. <强>用法:

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

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

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

      替代方式:SendTo上下文菜单

      以下是您可以使用上一节中提到的批处理文件 VS_FileCompare.cmd 的替代方法。它允许使用上下文菜单的Send To文件夹来比较文件。

      <强>制备

      1. 为批处理文件 VS_FileCompare.cmd 创建快捷方式“Compare2Files VS”,然后将其复制到 SendTo 文件夹中。通过赢取 + E
      2. 打开 Windows资源管理器
      3. 在文件资源管理器的地址栏中输入 shell:sendto ,打开 SendTo 文件夹(如here所述)。然后,将准备好的快捷方式放入此文件夹中。
      4. <强>用法:

        1. 通过赢取 + E
        2. 打开 Windows资源管理器
        3. 在资源管理器中选择要比较的两个文件
        4. 假设批处理文件 VS_FileCompare.cmd 的快捷方式名为“Compare2Files VS”,您可以选择这两个文件,右键单击并选择发送至 - &gt; Compare2Files VS 调用比较,如下所示: SendTo

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

        6. MSDN参考:
          - Usage of diff window
          - Visual Studio's Diff parameter

          *) 脚注:因为vsPathDEVENV.exe的路径)因Visual Studio的版本而异,所以我在描述如何你可以找到它(Windows 10):

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

答案 3 :(得分:24)

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

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

将告诉你如何做到这一点

答案 4 :(得分:21)

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

以防有人(像我一样)不想安装像VSCommands这样的多功能扩展程序...

答案 5 :(得分:18)

在Visual Studio 2012,2013,2015中,您也可以使用Web Essentials执行此操作,只需右键单击文件,然后从上下文菜单&gt;中进行操作。 Web Essential&gt;&gt;差异选择文件:

修改:现在可以separate extension

的形式使用

enter image description here

答案 6 :(得分:15)

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

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

或VS 2013

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

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

答案 7 :(得分:15)

Command Window CTRL + ALT + A

Tools.DiffFiles File1 File2

答案 8 :(得分:2)

我也有这个问题。没有TFS,但是我found this article helpful

具体而言,步骤1b。

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

tf diff /configure

答案 9 :(得分:2)

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

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

Context Menu

File Diference

答案 10 :(得分:1)

Visual Studio代码中,您可以:

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

答案 11 :(得分:0)

Akhil Mittal的文件兼容VS扩展。 完美的轻量级工具,可以完成工作。

答案 12 :(得分:0)

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

步骤1:打开Visual Studio命令提示符。如果找不到visual studio命令提示符,请选择visual studio tools

开始 - &gt; Visual Studio命令提示符

enter image description here

enter image description here

第2步:输入命令vsdiffmerge.exe

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

语法1:
vsdiffmerge&lt; file1&gt; &LT; file2的&GT; &LT; file1的&GT; &LT; OUTPUTFILE&GT; / t / m

语法2:
vsdiffmerge&lt; basefilename&gt; &LT; CompareFilename&GT; &LT; basefilename&GT; &LT; OutputFilename&GT; / 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

enter image description here


第3步:合并文件

enter image description here 请注意,如果该位置不存在文件名,则打开比较器。

您还可以在进行比较之前美化文件。在visual studio中Ctrl + K + D.

网上有很多美化网站。

答案 13 :(得分:0)

答案 14 :(得分:0)

在Visual Studio中,可以先使用 public class RegisterViewModel { [Required] [Display(Name = "Email")] [EmailAddress] public string Email { get; set; } [Required] [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "Password")] public string Password { get; set; } [DataType(DataType.Password)] [Display(Name = "Confirm password")] [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] public string ConfirmPassword { get; set; } [Required(ErrorMessage = "Enter First Name:")] [StringLength(maximumLength: 30, MinimumLength = 3)] [MaxLength(30)] [Display(Name = "First Name")] public string firstName { get; set; } [Required(ErrorMessage = "Enter Last Name:")] [StringLength(maximumLength: 30, MinimumLength = 3)] [MaxLength(30)] [Display(Name = "Last Name")] public string lastName { get; set; } [Required(ErrorMessage = "Please Select Profile Picture")] public IFormFile profilePicture { get; set; } public string profilePictureName { get; set; } [StringLength(200)] [MaxLength(200)] [Display(Name = "Add Facebook Link To Your Profile")] [DataType(DataType.Url)] public string facebookLink { get; set; } [StringLength(200)] [MaxLength(200)] [Display(Name = "Add Instagram Link To Your Profile")] [DataType(DataType.Url)] public string instagramLink { get; set; } [StringLength(200)] [MaxLength(200)] [Display(Name = "Add Twitter Link To Your Profile")] [DataType(DataType.Url)] public string twitterLink { get; set; } [Required(ErrorMessage = "Enter Date Of Birth:")] [DataType(DataType.Date)] public DateTime DOB { get; set; } [Required] [Display(Name = "Registration No")] public string season { get; set; } [Required] public string department { get; set; } [Required] public string roll { get; set; } public IEnumerable<SelectListItem> seasons { get; set; } public IEnumerable<SelectListItem> departments { get; set; } } 然后使用Command Window命令来调用Diff

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

答案 15 :(得分:0)

您可以使用 Android Studio 来比较任意两个项目,它具有非常有用的功能,例如向左复制、向右复制等。 只需打开您的项目文件夹,然后从项目侧栏中右键单击文件夹选择比较并打开您要与之比较的其他项目

答案 16 :(得分:-1)

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

答案 17 :(得分:-1)

基本上你不能。

版本 1.52.1 以上均无效。

答案 18 :(得分:-2)

我相信这是Visual Studio 2012的更好的扩展之一,它被称为代码比较,可以找到here.

答案 19 :(得分:-4)

如果你正在使用TFS连接,那么右键单击你需要比较的文件(通过源代码管理浏览器),它会显示一个这样的窗口 - enter image description here

现在更改源文件的路径:&#39; Souce Path:&#39;并通过VS比较工具进行比较。

同样,你可以比较同时比较文件夹所有文件的文件夹。