如何配置Visual Studio以使用“超越比较”


Answers:


561

在Visual Studio中,转到“ 工具”菜单,选择“ 选项”,展开“ 源代码管理”,(在TFS环境中,单击“ Visual Studio Team Foundation Server”),然后单击“ 配置用户工具”按钮。

该图显示“配置用户工具”按钮的位置

单击添加按钮。

输入/选择以下比较选项:

  • 扩展名.*
  • 操作方式Compare
  • 命令:(C:\Program Files\Beyond Compare 3\BComp.exe替换为您的计算机的正确路径,包括版本号)
  • 参数%1 %2 /title1=%6 /title2=%7

如果使用Beyond Compare Professional(三项合并):

  • 扩展名.*
  • 操作方式Merge
  • 命令:(C:\Program Files\Beyond Compare 3\BComp.exe替换为您的计算机的正确路径,包括版本号)
  • 参数%1 %2 %3 %4 /title1=%6 /title2=%7 /title3=%8 /title4=%9

如果使用Beyond Compare v3 / v4 Standard或Beyond Compare v2(两路合并):

  • 扩展名.*
  • 操作方式Merge
  • 命令:(C:\Program Files\Beyond Compare 3\BComp.exe替换为您的计算机的正确路径,包括版本号)
  • 参数%1 %2 /savetarget=%4 /title1=%6 /title2=%7

如果您使用超越比较中的标签

如果在选项卡模式下运行“超越比较”,当您一次从Visual Studio差异化或合并多个文件集时,它可能会引起混淆。要解决此问题,可以将参数添加到参数/solo的末尾。这样可以确保每个比较都在新窗口中打开,从而解决了标签问题。


17
请注意,对于“超越比较3”,您实际上应该使用BComp.exe -请参见scootersoftware.com/vbulletin/showthread.php?t=3461
Joe

5
我更新了此答案,以支持Beyond Compare v3 Pro / Std和Beyond Compare v2(v3提供三路合并),并从BC官方网站更新了论点:scootersoftware.com/support.php?
zz=kb_vcs

32
如果在选项卡模式下运行“超越比较”,当您一次从Visual Studio差异化或合并多个文件集时,它可能会引起混淆。要解决此问题,可以在参数末尾添加参数“ / solo”;这样可以确保每个比较都在新窗口中打开,从而解决了标签问题。
乔什·斯克莱

16
使用Visual Studio的Git加载项时,没有“配置用户工具”按钮。有谁知道钩住Git加载项以供比较使用的方法?
Stephen Price

7
除了Compare 4设置之外,其他设置与Visual Studio 2013相同。要支持版本4,只需将COMMAND路径中的“ 3”更改为“ 4”即可。这很明显,但是应该注意。例如,在我的工作站上,路径为:C:\ Program Files(x86)\ Beyond Compare 4 \ BCompare.exe
Mike Christian

86

Windows版Git的Visual Studio

如果您将GIT用作源代码管理系统,而不是(过时的)TFVC,则Visual Studio没有选择配置类似内容的选项。
相反,(我认为是正确的)它使用GIT配置文件的settings。因此,如果您已经具有GIT设置以使用Beyond Compare或任何其他第三方比较软件,它将选择并开始使用它。

如果不是,则只需进行设置(请参阅此处,以获取更多和可能更多的最新帮助)。使用Beyond Compare 4设置Visual Studio的相关信息是:

  1. 打开Visual Studio。
  2. 从工具菜单中选择选项。
  3. 在左侧树控件的“源代码控制”分支下选择“插件设置”。
  4. 在右侧窗格的“插件设置”下,选择“ Microsoft Git Provider”。
  5. 编辑全局git配置文件(位置是特定于Windows的操作系统%HOMEDRIVE%%HOMEPATH%/.gitconfig。请参见此处以获取信息),或者,如果您希望将其重新配置为仓库,那么在Git存储库中启动项目后,请在.git文件夹中编辑配置文件。项目文件夹。
  6. 更改配置文件以反映以下更改:

    [diff]
        tool = bc4
    [difftool "bc4"]
        cmd = \"C:\\Program Files (x86)\\Beyond Compare 4\\BComp.exe\" \"$LOCAL\" \"$REMOTE\"
    [merge]
        tool = bc4
    [mergetool "bc4"]
        cmd = \"C:\\Program Files (x86)\\Beyond Compare 4\\BComp.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" 
    

如果使用64位安装程序,请验证可执行文件的名称。我的是BCompare.exe

[diff]
    tool = bc4
[difftool "bc4"]
    cmd = \"C:\\Program Files\\Beyond Compare 4\\BCompare.exe\" \"$LOCAL\" \"$REMOTE\"
[merge]
    tool = bc4
[mergetool "bc4"]
    cmd = \"C:\\Program Files\\Beyond Compare 4\\BCompare.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\"

问题:如果您创建一个新的项目,并得到VS创建混帐回购协议,同时它WILL覆盖的负载添加到.git/config文件,迫使其再次使用Visual Studio(感谢您的MS!)。因此,要么在项目设置完成后通过另一种方式创建git repo(例如通过SourceTree或命令行等),要么编辑.git/config文件(在solution文件夹中)并删除上述设置的所有替代项。
感谢Minnow在评论中再次引起我的注意。

注意:我一直遇到这个问题,但是我正在使用VS和GIT,并且答案也不正确,尽管有些评论提到了带有正确答案的URL,但不清楚,如果我一直错过它,我相信其他人也会这样做。希望这将解决该问题。


非常有用,因为我正在Windows上使用Git。
MrBoJangles

2
不过要小心-VS 2015对我来说,将其自身设置为本地存储库中本地 git config文件中的diff / merge工具...。因此覆盖了全局。只需删除本地存储库配置中的条目,就可以了。
小丑

3
哈哈只是试图投票给这个惊人的答案...然后它说“你不能对自己的答案投票”。噢,上帝保佑你没有记忆!;)
GazB

4
BC4安装在我的机器上的安装路径略有不同,即64b dir:\"C:\\Program Files\\Beyond Compare 4\\BComp.exe\"
GraehamF

1
我发现设置全局git config根本不起作用。我不得不修改仓库的配置。VS2017。其他人也遇到同样的情况吗?和@GazB一样,我怀疑GraehamF和我一样,只是在64位Windows上安装了BC的64位版本,因此安装路径是正确的预期程序文件,而不是PF(x86)。
minnow


13

每当新版本的Visual Studio出现,我移动PC或新成员加入团队时,我每6个月都要这样做。因此,PowerShell:

# .Synopsys
# Sets up Beyond Compare professional as Diff tool for all instances of Visual Studio on this PC
# If you don't use TFS, change the sccProvider as appropriate
[CmdLetBinding()]
param(
    $bcPath = 'C:\Program Files (x86)\Beyond Compare 3\BComp.exe',
    $sccProvider = 'TeamFoundation'
)

$ErrorActionPreference = 'stop';
$baseKey = 'REGISTRY::\HKCU\Software\Microsoft\VisualStudio\*'

function SetRegKeyProperties($keyPath, [hashtable]$keyProps){
    if(!(Test-Path $keyPath)){
        Write-Verbose "Creating $keyPath"
        # Force required here to recursively create registry path
        [void] (new-item $keyPath -Type:Directory -Force);
    }
    foreach($prop in $keyProps.GetEnumerator()){
        Set-ItemProperty -Path:$keyPath -Name:$prop.Key -Value:$prop.Value;
    }
}

$configBases = dir $baseKey | ? { $_.PSChildName -match '^\d+\.\d$' }
foreach($item in $configBases){
    Write-Host "Configuring $item"

    $diffToolsKey = Join-Path $item.PSPath "$sccProvider\SourceControl\DiffTools"
    SetRegKeyProperties (Join-path $diffToolsKey '.*\Compare') @{Command=$bcPath;Arguments='%1 %2 /title1=%6 /title2=%7'}
    SetRegKeyProperties (Join-path $diffToolsKey '.*\Merge') @{Command=$bcPath;Arguments='%1 %2 %3 %4 /title1=%6 /title2=%7 /title3=%8 /title4=%9'}
}

在我的机器上工作。YMMV。无保证,不退款。VS似乎没有缓存密钥,因此立即生效。


1
这些天,其$ bcPath ='C:\ Program Files(x86)\ Beyond Compare 4 \ BCompare.exe'为最新版本。因此,如果仅将其与巧克力
般的装置

这很棒。非常感谢您发布此信息,这将使生活更加轻松!
d3r3kk

1
可能应该只是更新以读取注册表项:computer\hkey_local_machine\scooter software\beyond compare\exepath
Erik Philips

8

在Visual Studio 2008+中,转到

Tools menu -->  select Options 

在此处输入图片说明

在选项窗口->展开源代码控制->选择Subversion用户工具->选择超越比较

然后单击确定按钮。


2
请注意,此答案的“ subversion”位特定于是否使用SVN作为源代码控制提供程序。
piers7'7

1
仅SVN,不适用于TFS或Git或任何其他SCC提供者
Adam Plocher 2015年

3

@schellack发布的答案在大多数情况下是完美的,但我希望Beyond Compare能够模拟Visual Studio在其自己的合并窗口中使用的“与结果面板的2路合并”视图。

此配置隐藏中间面板(在大多数情况下AFAIK未使用)。

 %1 %2 "" %4 /title1=%6 /title2=%7 /title3="" /title4=%9

感谢Morgen


2

在64位Windows 7上的VS2013需要以下设置:选项| 源代码管理| 爵士乐源代码控制

检查复选框使用外部比较工具...(容易错过)

可执行文件的两向比较位置:C:\ Program Files(x86)\ Beyond Compare 3 \ BCompare.exe

可执行文件的三向冲突比较位置:C:\ Program Files(x86)\ Beyond Compare 3 \ BCompare.exe


2

BComp.exe也可以在多选项卡的情况下工作,因此除非您确实希望为每个文件进行比较都需要单独的窗口,否则无需添加/ solo。在超越比较3和4上进行了测试/验证。道德:对于VS外部比较工具配置,请使用BComp.exe而不是BCompare.exe。


2

我正在将VS 2017与在visualstudio.com托管(msdn)上由Git托管的项目一起使用

上面的链接通过“ GITHUB FOR WINDOWS”说明对我有用。

http://www.scootersoftware.com/support.php?zz=kb_vcs#githubwindows

配置文件位于“ c:\ users \ username \ .gitconfig”指示的位置,我根据情况将BC4更改为BC3,并使用了适当的路径:

C:/程序文件(x86)/超越比较3 / bcomp.exe


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.