如何配置Visual Studio以使用Beyond Compare

时间:2010-12-16 23:05:38

标签: visual-studio beyondcompare

我想将Visual Studio配置为默认情况下打开Beyond Compare作为diff工具。我怎么能这样做?

10 个答案:

答案 0 :(得分:535)

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

image to show location of the Configure User Tools button

单击添加按钮。

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

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

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

  • 扩展程序.*
  • 操作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

如果您在Beyond Compare中使用标签

如果在选项卡式模式下运行Beyond Compare,当您从Visual Studio一次对多个文件进行差异或合并时,可能会感到困惑。要解决此问题,您可以将参数/solo添加到参数的末尾;这样可以确保在新窗口中打开每个比较,解决选项卡问题。

答案 1 :(得分:63)

使用Git for Windows的Visual Studio

如果您使用GIT作为source code management system而非(相当过时)TFVC,则Visual Studio无法选择配置此类内容。
相反,(我认为正确)使用GIT config file's setting。因此,如果您已经使用GIT设置来使用Beyond Compare或任何其他第三方比较软件,它就会选择它并开始使用它。

如果没有,那么只需将其设置(请参阅here以获取更多可能更新的帮助)。使用Beyond Compare 4设置Visual Studio的相关信息是:

  1. 打开Visual Studio。
  2. 从“工具”菜单中选择“选项”。
  3. 在左侧树控件的“源代码管理”分支下选择“插件设置”。
  4. 在右侧窗格的“插件设置”下选择“Microsoft Git Provider”。
  5. 编辑全局git配置文件(位置是特定于操作系统的操作系统%HOMEDRIVE%%HOMEPATH%/.gitconfig。请参阅here获取信息)或者如果您希望它是repo specifict,那么在启动项目之后在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\" 
    
  7.   

    如果使用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来创建git repo 同时它添加一大堆覆盖到.git/config文件 强迫它再次使用Visual Studio(感谢MS!)。 因此,在设置项目后,通过其他方式创建git repo (例如通过SourceTree或命令行等...)或编辑.git/config文件 (在解决方案文件夹中)并删除上述设置的所有覆盖 感谢minnow在评论中再次引起我的注意。

      

    注意:我一直在讨论这个问题,但我正在使用VS与GIT和   答案是不正确的,虽然有些评论提到了一个URL   如果答案是正确的,那我就不清楚了,如果我一直想念它,我就是   确定其他人会如此希望这将解决这个问题。

答案 2 :(得分:15)

如果您使用的是TFS,可以在diff/merge configuration in Team Foundation - common Command and Argument values

中找到更多信息

它显示了如何配置以下工具:

  • WinDiff的
  • DiffDoc(适用于Word文件)
  • 的WinMerge
  • 超越比较
  • KDiff3
  • Araxis
  • 比较它!
  • SourceGear DiffMerge
  • 超越比较3
  • 的TortoiseMerge
  • Visual SlickEdit

答案 3 :(得分: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'}
}

在我的机器上运行。因人而异。没有保证,也没有退款。 VS似乎没有缓存密钥,因此立即生效。

答案 4 :(得分:8)

在Visual Studio 2008 +中,转到

Tools menu -->  select Options 

enter image description here

  

在选项窗口中 - >扩展源代码管理 - >选择Subversion User   工具 - >选择Beyond Compare

并单击“确定”按钮..

答案 5 :(得分:2)

64位Windows 7上的VS2013需要以下设置: 工具|选项|源控制|爵士源控制

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

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

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

答案 6 :(得分:2)

BComp.exe也适用于多标签场景,因此除非您真的需要为每个文件比较分别使用单独的窗口,否则无需添加/ solo。在Beyond Compare 3和4上测试/验证。道德:使用BComp.exe,而不是BCompare.exe,用于VS外部比较工具配置。

答案 7 :(得分:2)

@schellack发布的答案对于大多数场景来说都是完美的,但我希望Beyond Compare能够模拟与结果面板合并的 2 Way'查看Visual Studio在其自己的合并窗口中使用。

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

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

感谢Morgen

答案 8 :(得分:1)

我在Visualstudio.com托管(msdn)上使用VS 2017与Git托管的项目

以上链接适用于" GITHUB FOR WINDOWS"指令。

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

配置文件位于" c:\ users \ username.gitconfig"我刚刚根据我的情况将BC4改为BC3,并使用了相应的路径:

C:/ Program Files(x86)/ Beyond Compare 3 / bcomp.exe

答案 9 :(得分:1)

我将 BC3 用于我的git diff,但我也add vscode to the list of useful git diff tools。与 vs ide 体验相比,某些用户更喜欢 vscode

将VS代码用于Git Diff

git config --global diff.tool vscode
git config --global difftool.vscode.cmd "code --wait --diff $LOCAL $REMOTE"