Once the extension is installed, a new menu called "BridgeVs" will be available in the Visual Studio Menu Bar. This menu is only visible when a solution is loaded. There are two options available:
Bridging a solution will extend the MsBuild process to create a custom debugger visualizer assembly for each project. These assemblies are created or updated when you build your projects. Private and internal classes are not included, hence the magnifying glass will not be available for them.
Run the solution, set a breakpoint and hover the mouse pointer on any object instance then the magnifying glass will appear inside the data tip.
LINQBridgeVs is compatible with any Visual Studio edition from 2012 through 2019. The latest version 2.0 is only compatible with Visual Studio 2017 and 2019. It works only for .NET Framework 4.0 onwards. There is no support for .NET Framework 3.5 downwards, .NET Core or .NET Standard. This issue is due to a Visual Studio limitation hence this extension does not support .NET Core. There is a feature request in the Visual Studio Uservoice.
Visual Studio 2017 Preview
LINQBridgeVs 1.4.7 is compatible with the preview version of Visual Studio 2017, but it needs a workaround in order to work. Please refer to my last comment on this issue #47. This issue doesn't affect the latest version 2.0.
Configuration up to Version 1.4.7
This steps is necessary for versions of LINQBridgeVs up to 1.4.7 and thus is no longer needed for LINQBridgeVS 2.0. Visual Studio needs to be configured in order to run the extension. This is done only once by the extension itself.
Only for the first time, Visual Studio must be run with Administrator privileges. If not, a form will appear asking to restart Visual Studio:
Once Visual Studio is restarted as Administrator, the configuration will complete and the form will never appear again.
During this process one custom MsBuild Target, Custom.After.Microsoft.Common.targets is needed to extend the MsBuild process. It is copied into a specific Visual Studio version and edition's folder:
You can skip this process but you will not be able to use the extension until you complete the configuration.
This extension can be uninstalled from Visual Studio. Go to "Tools/Extensions and Updates..." select LINQBridgeVs and then click on Uninstall. There is also a manual step involved: delete Custom.After.Microsoft.Common.targets from the corresponding MSBuild folder as explained in Configuration and delete the registry entry \HKEY_CURRENT_USER\Software\LINQBridgeVs. I will create a ps script at some stage to automate it.
LINQPad must be present in the system before installing the extension otherwise it will not be possible to complete the configuration. Either the portable or the installed version are supported.
Custom folders for LINQPad queries and plugins are supported. This extension reads the configuration files located here:
Please remember that if you set a custom folder through LINQPad for either plugins or queries and then you go back to the default folder you need to manually delete either the two files above or their content.
This extension uses Sentry error tracking to log exceptions. After the Configuration is finished a message box will appear asking if you want to enable this functionality. Should you click yes, you will help me keep this project bug free.
This feature can be turned on or off at any time through the option menu: Tools->Options->BridgeVs->ErrorTracking. See the BridgeVs Option Menu section for more details.
Sentry is compliant with the GDPR as a data processor, please refer to this article GDPR, Sentry and you.
In no way is personal data (such as email addresses, credit card information, name of the machine, username or IP address) sent to Sentry. A data scrubber is enabled by default to remove any values that look like they contain credit cards (using regular expression). Keys that contain any of the following values: password, secret, passwd, authorization, api_key, apikey, access_token are filtered as well. RavenWrapper is the wrapper class used to send exceptions to Sentry. Please refer to lines 54-61 to see how some data is filtered out before the request is sent.
Data sent through the extension will live for a maximum of 90 days, after which it will be deleted. If you're concerned that personal data has been accidentally sent, please drop an email to linqbridgevs [at] gmail [dot] com and I will delete the data as soon as possible.
BridgeVs Option Menu
The BridgeVs Option menu offers four options:
The error tracking feature, as explained in the Error Tracking section, can be switched on or off at any time. To enable diagnostic logging set Enable Logging to true. Logs will be saved in %TEMP%\BridgeVs\logs.txt. Be careful, logging is synchronous so it will slow down the transmission process.
The LINQPad installation path can also be changed should you prefer to use a portable version after the configuration is completed. Bear in mind that the folder provided must contain the LINQPad.exe, otherwise it won't change the path. The Serialization Type is the method used to transmit debugging variables to LINQPad. Binary serialization is set by default. Json.NET is also available.
If after bridging and rebuilding your solution the magnifying glass still does not appear, make sure that in this folder "C:\Users\youruser\Documents\Visual Studio 201x\Visualizers" there is/are assemblies with this name template "AssemblyName.Visualizer.V1x.dll" (where x is the version number of Visual Studio). If the folder does not contain any assembly then please open a new bug. There are a number of dependent assemblies required by the custom visualizer (BridgeVs.DynamicCore.dll, BridgeVs.Grapple.dll, BridgeVs.Shared.dll, Newtonsoft.Json.dll, System.IO.Abstractions.dll, SharpRaven.dll) which are copied in these two folders during the Configuration:
Please do not delete these files. If they are accidentally deleted, the extension must be re-installed.
Do not keep two instances of two different versions of LINQPad running (e.g. LINQPad 4 and LINQPad 5) at the same time. If you do so, the data will automatically be sent to the lower version of LINQPad.