LINQPad 6 Preview
For this beta to work, you must first install the .NET Core 3 Desktop SDK Preview 6 or later.
There's a utility inside the zip to download it for you. (This requirement is just for the beta - the final LINQPad 6 release will require only the netcore runtime, not the full SDK.)
Download LINQPad6-Beta.zip (X64 + X86) - version 6.0.17
LINQPad 6 targets .NET Core 3.0 (Windows Desktop), so 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.
Please report bugs using the "Report Bug" tool on the Help menu, or send an email to customer support. This is a preview
and .NET Core is still in a state of flux, so there will be some glitches!
- For now, LINQPad 6 is shipped in a single xcopy-deployable .zip containing two launchers.
LINQPad6.exe runs LINQPad in 64-bit mode and LINQPad6-x86.exe run LINQPad in 32-bit mode.
(You will need to run LINQPad-x86 if you want to reference 32-bit assemblies.) There's also a utility included to download the latest .NET Core 3 preview.
- The automatic updater in LINQPad 6 works for beta versions (as well as release versions).
- 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.
- 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 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).
- 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.
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.
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.
Features not yet completed
- Command-line support and Util.Run
- Roslyn syntax tree visualizer
- Debugging F# queries
- Live execution tracking (awaiting .NET Core 3 support)
- Charting (awaiting .NET Core 3 support)