我在VS 2012中看到了新的比较工具,用于比较两个文件或文件的两个版本。 我喜欢。 但是,当我尝试找到它时,因为我不使用TFS,所以无法。 有没有一种方法可以只比较两个具有VS中内置功能但没有TFS的文件?
-
就像进一步使用的注释一样:如果您使用的是vs2015,请使用此链接:visualstudio.com/zh-cn/docs/tfvc/compare-files
-
请注意,这仍然适用于VS2017。因此,我提供了一个如何轻松处理此问题的答案。
-
没有一个答案可以比较已经在Visual Studio中打开的两个文件。
-
请为此功能投票:developercommunity.visualstudio.com/content/idea/619706/
您可以从命令提示符处调用devenv.exe /diff list1.txt list2.txt,或者,如果已经在运行Visual Studio实例,则可以在"命令"窗口中键入Tools.DiffFiles,并使用方便的文件名完成操作:
-
此差异工具是否提供任何有用的功能,例如向左复制,向右复制等?当我将工作副本与服务器版本进行比较时,有时我希望撤消某些更改,并且必须执行手动复制粘贴。
-
为什么在VS UI中隐藏了此功能?这是比较两个文件的最简单有效的方法。
-
如果路径中有空格,则可以将整个路径包装起来,也可以仅将部分零件用引号引起来。
-
对于那些不熟悉Visual Studio的用户,可以通过以下方式打开命令窗口:查看>其他Windows>命令窗口(VS Pro 2013)或使用CTRL + ALT + A
-
如此可耻的VS没有此非常基本功能的菜单项。许多IDE /编辑器都可以。
-
@Cleanshooter仅是VS 2013的完整版本,Visual Studio Express 2013 for Windows桌面中没有CommandWindow
-
哇,太好了!我多年来一直在使用VStudio,但我从来不知道有一个差异窗口!我一直都使用3rd party工具。为什么它们隐藏了如此重要的功能?
-
这在vs 2010中不起作用,即使做到了,它仍然很糟糕。没有内置的差异文件工具。这是什么样的半熟IDE BS?我无法打开2个文件并将它们与WTF进行比较?
-
是否有类似的方式来启动合并工具?
-
我可以忽略大小写比较吗?即大写小写字母的差异应忽略
-
我在VS2013中得到Command"devenv.exe" is not valid
-
@full_prog_full devenv.exe是从系统命令提示符(cmd.exe)或Windows"运行"对话框(Win+R)(而不是Visual Studio)中调用的。如果Visual Studio已经在运行,请在其"命令"窗口中使用Tools.DiffFiles。
-
Tools.DiffFiles对我不起作用! VS仅声明命令[…]无效。我认为这是一个语言问题,因为我有德语版的Visual Studio2013。工具在德语中称为Extras(与工具完全无关!)。但是Extras.DiffFiles也不起作用。有谁知道这是德语版本,还是有人知道另一个原因,对我不起作用?
-
Tools.DiffFiles完全没有用。它会生成一个比较文件的临时副本,更糟糕的是,临时副本将具有默认编码。
-
此方法也适用于VS2015。谢谢@VladimirReshetnikov!
-
注意:在Visual Studio 2015中,您可以在这里找到它:视图->工具栏->比较文件。只需在快速启动窗口中输入"比较",即可添加它。
您可以从Visual Studio画廊尝试VSCommands扩展。
最新版本允许您选择两个文件并进行比较:
-
我安装了扩展程序,但是此选项对我不可用。
-
VSCommands 14在VS 2015 Update 1社区的屏幕截图中均未添加任何项
-
vs 2017没有此扩展的更新!!
受到上面接受的答案的启发,我发现了一种非常舒适的方法,您可以通过拖放或通过"发送到"上下文菜单立即使用Visual Studio比较两个文件。它只需要做一点准备,您需要做一次,然后它就像瑞士军刀一样有用。
使用拖放进行文件比较
准备:
1.使用您喜欢的文本编辑器创建一个新的批处理文件。输入以下内容:
1 2 3 4
| @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参数。这是因为我注意到文件浏览器将第二个文件作为第一个参数传递,然后将第一个文件作为第二个参数传递。
将此代码另存为VS_FileCompare.cmd以便使用,如果需要,请修改vspath以匹配devenv.exe的位置(取决于您当前使用的Visual Studio版本,请参见脚注*))
为VS_FileCompare.cmd创建一个名为"文件比较"的快捷方式,然后将其放置在桌面上(如下面的动画所示),因此始终可以将文件拖放到该文件上,或者直接将批处理文件放置在桌面上。就这样!
用法:
通过Win + E打开Windows资源管理器
选择两个文件以在资源管理器中进行比较
如下图所示,将它们拖放:
几秒钟后(取决于Visual Studio的启动时间),结果将显示在Visual Studio中:
注意:如果Visual Studio已打开,则不会造成损害。在这种情况下,它将在运行的Visual Studio实例中打开一个新窗口。因此,您可以比较多个文件对,但是请确保一次仅选择2个文件。
另一种方法:SendTo上下文菜单
这是替代方法,您可以使用上面部分中提到的批处理文件VS_FileCompare.cmd。它允许使用上下文菜单的"发送到"文件夹来比较文件。
制备:
为批处理文件VS_FileCompare.cmd创建快捷方式" Compare2Files VS",并将其复制到SendTo文件夹中。通过Win + E打开Windows资源管理器
通过在文件浏览器的地址栏中输入shell:sendto,打开SendTo文件夹(如此处所述)。然后,将准备好的快捷方式放入此文件夹。
用法:
通过Win + E打开Windows资源管理器
选择两个文件以在资源管理器中进行比较
假设批处理文件VS_FileCompare.cmd的快捷方式名为" Compare2Files VS",则可以选择两个文件,单击鼠标右键,然后选择"发送至-> Compare2Files VS"以调用比较,如下所示:
几秒钟后(取决于Visual Studio的启动时间),结果将显示在Visual Studio中:
MSDN参考:
-差异窗口的用法
-Visual Studio的Diff参数
*)脚注:由于vspath(devenv.exe的路径)根据您的Visual Studio版本而有所不同,因此,我将描述如何找到它(Windows 10):
在Windows开始菜单中,找到Visual Studio图标
右键单击以打开上下文菜单。选择"更多">"打开文件位置"。
打开Windows资源管理器,突出显示Visual Studio快捷方式。
右键单击Visual Studio,然后选择"属性"。
在属性对话框中,您可以在"目标:"中找到路径
-
这确实是一个非常好的和详尽的答案,绝对应该投票赞成。我来自不断寻找开箱即用答案的小组,即使答案被标记在线程中也是如此,所以我绝对会给它一个提示。
-
@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
-
那真是太棒了,就像一个魅力。非常感谢队友
-
@SabbirHassan-不客气! :-)
-
太好了!投票赞成这个。只是爱这个解决方案的朴实本质。感谢您的分享。
-
从Visual Studio 2017开始,有一个命令行工具可以找到安装的最新VS的路径:C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe。在for循环中解析其输出将获得Visual Studio的路径。
-
@TsahiAsher-很酷的提示,不知道vswhere.exe。我对其进行了一些试验,发现以下参数很有用:vswhere.exe -all -legacy -sort -format value -property installationPath-仅列出所有现有实例的安装路径。您可以轻松地将其用于批处理。
我一直是WinMerge的粉丝,这是一个开源项目。您可以相当轻松地将其插入Visual Studio。
Replace diff/merge tool in Visual Studio Team System with WinMerge
会告诉你如何做
-
还能够区分文件夹-非常强大
-
WinMerge的唯一缺点是其识别变化的能力有限(例如空格,将行分成更多行等)
还有一个名为CompareFiles的Visual Studio扩展,除了将"比较文件"条目添加到解决方案资源管理器上下文菜单外,它什么也不做。它调用内置的Visual Studio差异工具。
以防万一(像我这样)不想安装像VSCommands这样的多合一扩展...
-
注意:此扩展仅适用于VS2012,但是您可以编辑清单文件以轻松支持VS2013-有关详细信息,请参见我在扩展的"问答"选项卡上的评论。 (我想要此功能,但由于其许可证而无法使用免费版本的VSCommands)
-
Visual Studio比较工具可用于2013年,visualstudiogallery.msdn.microsoft.com /
在Visual Studio 2012、2013、2015中,您也可以使用Web Essentials进行操作,只需右键单击文件,然后从上下文菜单> Web Essential >>区分所选文件:
编辑:现在可以作为单独的扩展程序使用
-
我在Web Essential-VS 2015中看不到差异选择文件或将Markdown编译为HTML
-
我已经为VS 2015安装了新版本,但是为什么看不到Diff selected files选项?
-
@stom安装我提到的扩展。
Command Window(CTRL + ALT + A)
1
| Tools.DiffFiles File1 File2 |
-
这和另一个答案一样
-
也许-尽管我个人而是使用GUI选择文件而不是在任何情况下都必须键入两个路径来构造文件-我的意思是不是1984。
如果您已安装VS,也可以致电
1
| "%VS110COMNTOOLS%..\IDE\vsdiffmerge.exe""File1""File2" |
或VS 2013
1
| "%VS120COMNTOOLS%..\IDE\vsdiffmerge.exe""File1""File2" |
资料来源:http://roadtoalm.com/2013/10/22/use-visual-studio-as-your-diff-and-merging-tool-for-local-files/
-
谢谢你为我工作。 c: temp>"%VS120COMNTOOLS%.. IDE vsdiffmerge.exe" 1256.txt 1256_PROD_Original.txt
对于VS 2017安装
https://marketplace.visualstudio.com/items?itemName=vs-publisher-457497.FileComparer2017
问题是您无法比较不同proyects中的文件,但可以将文件复制到同一项目中进行比较...
-
不幸的是,当尝试在没有解决方案的情况下比较两个文件时,此方法不起作用(例如,当您以文件夹模式打开VS2017时:打开-文件夹)
我也有这个问题。没有TFS,但是我发现本文很有帮助。
具体地,步骤1b。
打开Visual Studio命令提示符,然后导航到Common7 / IDE文件夹并键入
在Visual Studio Code中,您可以:
-
转到Explorer
-
右键单击要比较的第一个文件
-
选择Select for compare
-
右键单击要比较的第二个文件
-
选择Compare with '[NAME OF THE PREVIOUSLY SELECTED FILE]'
Akhil Mittal的文件比较器VS扩展。
出色的轻巧工具,可以完成工作。
VS扩展:Mads Kristensen的文件差异
比较任何两个文件并将其合并到一个文件中如果安装了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。
在线有很多美化网站。
Visual Studio代码对此非常有用-打开一个文件夹,右键单击两个文件并进行比较。
我相信这是Visual Studio 2012更好的扩展之一,它被称为"代码比较",可以在这里找到。
如果您正在使用连接的TFS,则右键单击您需要比较的文件(通过源代码管理浏览器),它会为您显示一个这样的窗口-
现在,在" Souce Path:"中更改源文件的路径,即可通过VS比较工具进行比较。
同样,您也可以比较文件夹,它一次比较一个文件夹的所有文件。
-
如果您阅读原始文章,他会特别指出:"有没有办法我可以只比较VS中具有内置功能但没有TFS的两个文件?"您的答案要求他拥有TFS。
-
尽管他尝试回答..虽然,他的尝试是错误的+1