如何配置 Visual Studio 以使用 Beyond Compare
Posted
技术标签:
【中文标题】如何配置 Visual Studio 以使用 Beyond Compare【英文标题】:How to configure Visual Studio to use Beyond Compare 【发布时间】:2011-05-26 20:37:02 【问题描述】:我想将 Visual Studio 配置为默认打开 Beyond Compare 作为 diff 工具。我该怎么做?
【问题讨论】:
scootersoftware.com/support.php?zz=kb_vcs 【参考方案1】:在Visual Studio中,进入Tools菜单,选择Options,展开Source Control,(在TFS环境下,点击Visual Studio Team Foundation Server),然后单击配置用户工具按钮。
点击添加按钮。
输入/选择以下比较选项:
分机:.*
操作: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(2-way Merge):
分机:.*
操作:Merge
命令:C:\Program Files\Beyond Compare 3\BComp.exe
(替换为您机器的正确路径,包括版本号)
参数:%1 %2 /savetarget=%4 /title1=%6 /title2=%7
如果您在 Beyond Compare 中使用标签
如果您在选项卡模式下运行 Beyond Compare,当您从 Visual Studio 一次比较或合并多个文件集时,它可能会感到困惑。要解决此问题,您可以将参数 /solo
添加到参数的末尾;这样可以确保每次比较都在新窗口中打开,从而解决选项卡问题。
【讨论】:
请注意,对于 Beyond Compare 3,您实际上应该使用 BComp.exe -- 请参阅 scootersoftware.com/vbulletin/showthread.php?t=3461 我更新了这个答案以支持 Beyond Compare v3 Pro/Std 和 Beyond Compare v2(v3 提供 3 路合并)以及来自 BC 官方网站的更新参数:scootersoftware.com/support.php?zz=kb_vcs 如果您在选项卡模式下运行 Beyond Compare,当您从 Visual Studio 一次比较或合并多个文件集时,它可能会感到困惑。要解决此问题,您可以将参数“/solo”添加到参数的末尾;这样可以确保每次比较都在新窗口中打开,从而解决标签问题。 使用 Visual Studio 的 Git 插件时,没有配置用户工具按钮。任何人都知道一种挂钩 Git 插件以使用无与伦比的方法吗? Beyond Compare 4 设置与 Visual Studio 2013 相同。要支持版本 4,只需将 COMMAND 路径中的“3”更改为“4”。这很明显,但应该注意。例如,在我的工作站上,路径是:C:\Program Files (x86)\Beyond Compare 4\BCompare.exe【参考方案2】:Visual Studio with Git for Windows
如果您使用 GIT 作为您的 source code management system 而不是(相当过时的)TFVC,那么 Visual Studio 没有选项来配置类似的东西。 相反,它(在我看来是正确的) 使用GIT config file's setting。因此,如果您已经设置了 GIT 以使用 Beyond Compare 或任何其他第三方比较软件,它只会选择它并开始使用它。
如果不是,那么只需设置它(请参阅here 以获得更多和可能更新的帮助)。使用 Beyond Compare 4 设置 Visual Studio 的相关信息是:
-
打开 Visual Studio。
从工具菜单中选择选项。
选择左侧树形控件的源代码管理分支下的插件设置。
在右侧窗格的 Plug-In Settings 下选择 Microsoft Git Provider。
编辑全局 git 配置文件(位置是特定于 Windows 的操作系统,它是
%HOMEDRIVE%%HOMEPATH%/.gitconfig
。有关信息,请参阅 here)或者如果您希望它是特定于 repo 的,那么在 Git 存储库中启动项目后,编辑配置项目文件夹中的 .git 文件夹中的文件。
更改配置文件以反映以下更改:
[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 在以下位置创建 git repo
同时它将向.git/config
文件添加大量覆盖
强制它再次使用 Visual Studio(感谢那个 MS!)。
所以要么在项目设置完成后通过另一种方式创建 git repo
(例如通过 SourceTree 或命令行等...)或编辑 .git/config
文件
(在解决方案文件夹中)并删除上述设置的所有覆盖。感谢 cmets 中的 minnow 再次引起我的注意。
注意:我经常遇到这个问题,但我正在使用 VS 与 GIT 和 答案不正确,尽管一些 cmets 提到了 URL 正确答案不清楚,如果我一直错过它,我会 相信其他人会非常希望这能解决这个问题。
【讨论】:
非常有帮助,因为我使用的是 Windows 版 Git。 小心 - VS 2015,对我来说,将自己设置为本地 repo 的 local git 配置文件中的 diff/merge 工具....从而覆盖全球的。只需删除本地 repo 配置中的条目就可以了。 哈哈只是想投票给这个惊人的答案......然后它说“你不能投票给你自己的答案”......哦,哈哈,上帝保佑没有记忆! ;) BC4 安装在稍微不同的路径中,即 64b 目录,在我的机器上:\"C:\\Program Files\\Beyond Compare 4\\BComp.exe\"
我发现设置全局 git config 根本不起作用。我不得不修改 repo 的配置。 VS2017。其他人有同样的经历吗? @GazB,我怀疑 GraehamF 和我一样,只是在 64 位 Windows 上安装了 BC 的 64 位版本,所以安装的路径是正确的、预期的程序文件,而不是 PF(x86)。【参考方案3】:
如果您使用的是 TFS,可以在diff/merge configuration in Team Foundation - common Command and Argument values 找到更多信息
它展示了如何配置以下工具:
WinDiff DiffDoc(用于 Word 文件) WinMerge 无与伦比 KDiff3 阿拉西斯 比较一下! SourceGear 差异合并 超越比较 3 乌龟合并 Visual SlickEdit【讨论】:
不,你不能,因为在 21 世纪,MicroShit 还不知道如何进行重定向。【参考方案4】:当新版本的 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似乎没有缓存key,所以立即生效。
【讨论】:
最近它的 $bcPath = 'C:\Program Files (x86)\Beyond Compare 4\BCompare.exe' 以获得最新版本。因此,如果仅将其与巧克力安装相结合...(顺便感谢) 这很棒。非常感谢您发布此信息,将使生活更轻松! 可能应该只是更新以读取注册表项:computer\hkey_local_machine\scooter software\beyond compare\exepath
。
谢谢,这真的很有用!您将如何使用 Visual Studio 2017 及更高版本做到这一点?因为这里使用了私有注册表(visualstudioextensibility.com/2017/07/15/…)。【参考方案5】:
在 Visual Studio 2008 + 中,转到
Tools menu --> select Options
在选项窗口中 --> 展开源代码管理 --> 选择 Subversion 用户 工具 --> 选择超越比较
然后点击确定按钮..
【讨论】:
请注意,如果您使用 SVN 作为源代码控制提供程序,则此答案的“颠覆”位是特定的。 仅限 SVN,不适用于 TFS 或 Git 或任何其他 SCC 提供程序【参考方案6】:@schellack 发布的答案非常适合大多数情况,但我希望 Beyond Compare 模拟 Visual Studio 在其自己的合并窗口中使用的“2 Way merge with a result panel”视图。
此配置隐藏了中间面板(在大多数情况下 AFAIK 未使用)。
%1 %2 "" %4 /title1=%6 /title2=%7 /title3="" /title4=%9
感谢Morgen
【讨论】:
【参考方案7】:我在 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
【讨论】:
【参考方案8】:64 位 Windows 7 上的 VS2013 需要以下设置: 工具 |选项 |源代码管理 |爵士源代码管理
检查复选框使用外部比较工具...(容易错过)
2-Way 比较 可执行文件的位置:C:\Program Files (x86)\Beyond Compare 3\BCompare.exe
三向冲突比较 可执行文件的位置:C:\Program Files (x86)\Beyond Compare 3\BCompare.exe
【讨论】:
【参考方案9】:BComp.exe 也适用于多选项卡场景,因此无需添加 /solo,除非您真的希望每个文件比较都有单独的窗口。在 Beyond Compare 3 和 4 上测试/验证。道德:使用 BComp.exe,而不是 BCompare.exe,用于 VS 外部比较工具配置。
【讨论】:
【参考方案10】:我使用 BC3 作为我的 git diff,但我也会使用 add vscode to the list of useful git diff tools。一些用户更喜欢 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 以使用 Beyond Compare的主要内容,如果未能解决你的问题,请参考以下文章
如何配置 Visual Studio 以使用代码视图作为 Web 服务的默认视图?
如何配置 Visual Studio 2012 数据库项目以构建部署 .sql 文件
如何在 Visual Studio 2013 中配置 SQL Server 以允许远程连接
如何配置 Visual Studio Code 以解析 AWS Lambda 层的输入路径 (javascript)