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


当前回答

每隔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似乎没有缓存键,所以会立即生效。

其他回答

如果您正在使用TFS,您可以在Team Foundation -通用命令和参数值中的diff/merge配置中找到更多信息

介绍如何配置以下工具:

WinDiff DiffDoc(适用于Word文件) WinMerge 无以伦比 KDiff3 Araxis 比较它! SourceGear DiffMerge 无与伦比3 TortoiseMerge 视觉SlickEdit

每隔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似乎没有缓存键,所以会立即生效。

我使用BC3作为我的git差异,但我也会将vscode添加到有用的git差异工具列表中。有些用户更喜欢vscode而不是vs ide体验。

使用VS Code的Git差异

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

在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添加到参数的末尾;这确保了每次比较都在一个新窗口中打开,解决了选项卡的问题。

64位Windows 7上的VS2013需要这些设置: 工具|选项|源码控制| Jazz源码控制

使用外部比较工具…(很容易忽略)

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

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