Is there a way in visual studio to change the behavior when I double click a file in the \'Pending Changes\' view.
The default behavior is, that Visual Studio opens
The steps from VS2017 onward are a bit different. VS 2017 uses its own private registry, which is stored in your AppData folder.
Steps
Close all visual studio instances
Select the HKEY_USERS node, and click File > Load Hive
Open privateregistry.bin which can be found at %UserProfile%\AppData\Local\Microsoft\VisualStudio\15.0_[*some key*]
Provide a key name. Eg VS2017PrivateRegistry
Navigate to the following path and create a new DWORD with value of 1.
Path:HKEY_USERS\VS2017PrivateRegistry\Software\Microsoft\VisualStudio\15.0_[*some key*]\TeamFoundation\SourceControl\Behavior
Value: DoubleClickOnChange (DWORD) 1
Select HKEY_USERS\VS2017PrivateRegistry
Click File > Unload Hive
You could also apply some Visual Studio keyboard short cuts for the various comparison types - Latest, WorkSpace and Previous.
See the following post: Comparison keyboard shortcuts for Pending Changes in TFS
Building on Tereza's answer using powershell
Run powershell as adminstrator and close Visual Studio. (you might have to wait a couple of seconds for VS to release some files) (if you copy paste make sure to send the last command, or else VS won't start)
$instanceId = $(& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property instanceId).Trim()
$versionMajor = $(& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationVersion).Trim().Substring(0,2)
$year = $(& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property catalog_productLineVersion).Trim()
reg.exe load HKLM\VS$yearPrivateRegistry $env:LOCALAPPDATA\Microsoft\VisualStudio\$versionMajor.0_$instanceId\privateregistry.bin
reg.exe add HKLM\VS$yearPrivateRegistry\Software\Microsoft\VisualStudio\$versionMajor.0_$instanceId\TeamFoundation\SourceControl\Behavior /v DoubleClickOnChange /t REG_DWORD /d 1 /f
reg.exe unload HKLM\VS$yearPrivateRegistry
This attempts to determine the major version as well.
This PowerShell script should turn this on for the latest installed instance (adapted from Anish's answer)
You'll need to close all VS instances first.
$instanceId = $(& "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property instanceId).Trim()
reg.exe load HKLM\VS2017PrivateRegistry $env:LOCALAPPDATA\Microsoft\VisualStudio\15.0_$instanceId\privateregistry.bin
reg.exe add HKLM\VS2017PrivateRegistry\Software\Microsoft\VisualStudio\15.0_$instanceId\TeamFoundation\SourceControl\Behavior /v DoubleClickOnChange /t REG_DWORD /d 1 /f
reg.exe unload HKLM\VS2017PrivateRegistry
This PowerShell command should turn this on for all installed versions:
Set-ItemProperty HKCU:\Software\Microsoft\VisualStudio\*\TeamFoundation\SourceControl\Behavior DoubleClickOnChange 1
Do shift + double-click instead.
Put this on a .reg file and and double click it, this will make your double click compare instead of opening the file in the pending changes window.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\TeamFoundation\SourceControl\Behavior]
"DoubleClickOnChange"=dword:00000001
Make sure the Visual Studio version is correct.