我想配置Visual Studio打开超越比较默认作为差异工具。我该怎么做呢?


当前回答

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

上面的链接为我工作与“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

其他回答

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

上面的链接为我工作与“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

每隔6个月,每当Visual Studio的新版本出来,或者我移动电脑,或者有新成员加入团队时,我就会厌倦这样做。所以,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似乎没有缓存键,所以会立即生效。

BComp.exe也可以在多选项卡场景下工作,所以没有必要添加/solo,除非你真的想为每个文件比较单独的窗口。在Beyond Compare 3和4上测试/验证。寓意:使用BComp.exe,而不是BCompare.exe,用于VS外部比较工具配置。

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

单击Add按钮。

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

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

如果使用Beyond Compare Professional (3-way Merge):

扩展:. * 操作:合并 命令:C:\Program Files\Beyond比较3\BComp.exe(替换为您机器的正确路径,包括版本号) 参数:%1 %2 %3 %4 /title1=%6 /title2=%7 /title3=%8 /title4=%9

如果使用Beyond Compare v3/v4 Standard或Beyond Compare v2 (2-way Merge):

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

如果你在Beyond Compare中使用标签

如果您以选项卡模式运行Beyond Compare,当您一次从Visual Studio中区分或合并多个文件集时,它可能会混淆。为了解决这个问题,你可以将参数/solo添加到参数的末尾;这确保了每次比较都在一个新窗口中打开,解决了选项卡的问题。

Visual Studio with Git for Windows

如果你使用GIT作为你的源代码管理系统,而不是(相当过时的)TFVC,那么Visual Studio就没有选项来配置这样的东西。 相反,它(在我看来)使用了GIT配置文件的设置。因此,如果你已经安装了GIT,可以使用Beyond Compare或任何其他第三方比较软件,它就会选择这个并开始使用它。

如果没有,那就设置一下(参见这里获得更多最新的帮助)。使用Beyond Compare 4设置Visual Studio的相关信息如下:

Open Visual Studio. Select Options from the Tools menu. Select Plug-In Settings under the Source Control branch of the left-side tree control. Select Microsoft Git Provider under Plug-In Settings on the right-hand pane. Edit the global git config file (location is OS specific for windows it's %HOMEDRIVE%%HOMEPATH%/.gitconfig. See here for info) OR if you want it to be repo specifict then after starting a project in a Git repository, edit the config file in the .git folder in the project folder. Change the config file to reflect the following changes: [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\"

Issues: If you create a new project and get VS to create the git repo at the same time it WILL add a load of overrides to the .git/config file forcing it to use Visual Studio again (Thanks for that MS!). SO either create the git repo via another means after the project has been setup (like via SourceTree or the command line etc...) OR edit the .git/config file (in the solution folder) and remove any overrides for the above settings. Thanks to minnow in the comments for bringing my attention to it again.

注意:我一直遇到这种情况,但我使用VS与GIT和 答案是不正确的,尽管一些评论提到了一个URL 正确的答案是不清楚的,如果我一直错过它,我 当然其他人会这样做,所以希望这将解决这个问题。