LINQPad 6 - Release Notes
LINQPad 6 targets .NET Core 3 for Windows. This means that your queries run
under the .NET Core 3 runtime, and you can reference .NET Core assemblies. You can run LINQPad 5 side-by-side for .NET Framework compatibility.
LINQPad 6 requires the .NET Core 3 SDK. You can get this in any of the following ways:
- Run the LINQPad 6 Setup, which will guide you through installing it
- Run the utility that ships with LINQPad (Download .NET Core 3.exe)
- Install it from here (choose SDK, Windows, Installer)
- Install the latest Visual Studio 2019
For Licensed Users
To enable the Pro/Developer/Premium features of LINQPad 6, you'll need to upgrade your license to Version 6
if you bought your license before December 2018. Your new license activates all versions of LINQPad on your machine.
New features in LINQPad 6
- You can now include namespace declarations in queries of type 'C# Program', so you can paste entire .cs files from Visual Studio into LINQPad.
- LINQPad's editor now supports bookmarks, to help with navigating around large documents. The shortcut keys are the same as the defaults in Visual Studio, and ReSharper's ergonomic shortcut keys
are also supported (Shift+Ctrl+1 through Shift+Ctrl+9 to set a numbered bookmark, and Ctrl+1 through Ctrl+9 to jump to a numbered bookmark).
- You can now add references to other .linq files, via the new #load directive.
- You can now connect to Oracle, MySQL, SQLite and PostgreSQL databases via a new built-in driver that leverages Entity Framework Core.
The new driver generates data contexts with table and property names similar to the built-in LINQ-to-SQL driver (as well
as LINQPad 5's IQ driver), so that queries can be easily ported. It also supports SQL Server, so for SQL Server you
can now choose between LINQ-to-SQL and Entity Framework Core.
- The default namespace imports for each query can now be viewed and edited. This can be useful in avoiding conflicts with other APIs.
- The extensibility model for writing custom data context drivers has been updated for LINQPad 6.
Creating a project is now as simple as running a LINQPad script, and publishing it is as simple as publishing a NuGet package.
- When executing a selection in 'C# Program' mode, the selected text can now call other methods in the query.
- The 'Go to definition' shortcut (F12) now works for symbols defined in My Extensions (as well as #load-ed queries).
- The command-line runner and Util.Run are now available in LINQPad 6. The command-line runners are called LPRun6 (64-bit) and LPRun6-x86 (32-bit).
- Charting is back, as is the Roslyn syntax tree visualizer. And Roslyn Quoter is now integrated!
To activate, either right-click from the editor, or click the new button on the syntax tree visualizer.
- Outlining now works in statements mode, too, if you have #regions or methods defined.
- If you hold down the control key anywhere in the editor, it will display the quick-info tooltip, as well as any errors or warnings on that line.
- If you type /// before a member, LINQPad will now expand it into a simple (one-line) XML summary. These summaries are picked up from #load-ed queries, as well as My Extensions.
- The back-end for the NuGet Package Manager has been re-written to be faster and more reliable. It now works directly from the local user cache,
and recognizes reference assemblies and native dependencies in line with .NET Core protocols.
When restoring packages, LINQPad 6 searches all enabled package sources.
- Queries now automatically re-load when the file is changed externally.
- When calling file-based methods such as File.Open, the editor now offers autocompletion on the file path.
- There are new options available when calling Dump - to suppress column totals, control repeating headers, and specify a depth at which to initially collapse the results.
- When compiling your queries, LINQPad 6 preferences reference assemblies over runtime assemblies. If the reference assemblies for the current
.NET Core runtime version have not been installed, LINQPad will offer to download the appropriate NuGet package.
- LINQPad 6 supports soft cancellation. By monitoring this.QueryCancelToken, your query can respond to the Cancel button, and
elect to end early without the underlying process being killed.
- You can now connect to SQL CE databases without installing SQL CE. LINQPad will automatically download the NuGet package as required.
- There's now a checkbox in the Query Properties dialog to include references to ASP.NET Core assemblies.
- You can now rename a query tab (without saving it) by pressing Shift+F2, or via the option on the query tab's context menu.
Things that behave differently in LINQPad 6
- When you referenced an .NET Framework assembly in LINQPad 5, any dependencies located in the same folder would automatically load.
To support .NET Core and .NET Standard assemblies built by Visual Studio, LINQPad 6 goes further and parses the .deps.json file, automatically resolving
all of the assembly's NuGet dependencies, combining them into a compatible set (along with any other NuGet packages that your query has referenced).
Any packages that are missing for the current .NET Core version or architecture are automatically restored.
- There are no options for specifying an app.config in LINQPad 6, because the app.config model is not applicable to .NET Core.
Instead, you can ask LINQPad to copy .json configuration files in the application base directory, by adding references to those files (just as you would with DLLs).
- There's no longer an option to add Framework assembly references. In keeping with Visual Studio, all .NET Core Framework assemblies are referenced automatically.
- The built-in LINQ-to-SQL driver uses another (almost-identical) branch of LINQ-to-SQL that runs on .NET Core.
- Live execution tracking is not supported in .NET Core.
Running LINQPad 5 and 6 side-by-side
If you're running LINQPad 5 and 6 side-by-side, you can share the same queries with some provisos:
- Any .NET Framework assembly references are ignored in LINQPad 6.
- Other assembly references may cause difficulties unless they are to .NET Standard libraries. NuGet package references are the best option.
- For conditional compilation, the NETCORE symbol is defined in LINQPad 6 but not LINQPad 5.
- My Extensions is separate for LINQPad 5 and 6, so each can have different implementations and dependencies.
As long as you provide textually similar methods in both, queries will work with both.
X64 vs X86
LINQPad 6 ships with launchers for both X64 and X86:
- LINQPad6.exe runs LINQPad in 64-bit mode
- LINQPad6-x86.exe runs LINQPad in 32-bit mode
64-bit mode is recommended unless you need to interoperate with 32-bit unmanaged DLLs.
Download LINQPad 6 - installer (X64 + X86)
Download LINQPad 6 - xcopy-deploy (X64 + X86)
If you download the xcopy-deploy build, remember to install the .NET Core 3 Windows SDK (3.0.0).
There's a utility inside the zip to download it for you.