LINQPad Premium Edition v6.0.26 Beta (Any CPU)
LINQPad Premium Edition v6.0.26 Beta (Any CPU)
LINQPad is not just for LINQ queries, but any C#/F#/VB expression, statement block or program. Put an end to those hundreds of Visual Studio Console projects cluttering your source folder and join the revolution of LINQPad scripters and incremental developers. Reference your own assemblies and NuGet packages. Prototype your ideas in LINQPad and then paste working code into Visual Studio. Or call your scripts directly from the command-line. Experience LINQPads rich output formatting, optional debugger and autocompletion, and the magic of dynamic development and instant feedback!
The .NET Programmers Playground
Instantly test any C#/F#/VB snippet or program
Query databases in LINQ (or SQL) SQL/CE/Azure, Oracle, SQLite & MySQL
Enjoy rich output formatting, optional autocompletion and integrated debugging
Script and automate in your favorite .NET language
Super lightweight single 15MB executable!
Standard edition free, with no expiry
LINQPad: The Ultimate .NET Scratchpad
LINQPad can run not only LINQ queries, but any C#/F#/VB expression, statement or program.
For instance, have you ever needed to test a DateTime format string? In LINQPad, just enter the expression and hit F5:
With LINQPad's instant edit/run cycle and optional full autocompletion, you'll have code snippets fully tweaked in less time than it takes to bring up Visual Studio's Add Reference dialog!
What about testing a regular expression? You'll start using Regex a lot more once you have LINQPad:
Notice how LINQPad nicely formats the Match object. Complex object graphs are much more readable in LINQPad's output window.
To run a series of statements, just change the "Language" combo to Statements (or hit Ctrl+2):
Again, you can keep tweaking your code until it does what you want, then paste working code into Visual Studio.
You can even run a full program with additional methods: just change the Language to Program, and LINQPad will wrap your code in a Main method so you can write additional methods and classes.
Need to reference custom assemblies or NuGet references? No problem: just hit F4 for the Add Reference dialog.
Additional benefits:
LINQPad reports the execution time in the status bar, so you won't have to manually create a Stopwatch class for performance testing.
Want to test a variation of your snippet? Ctrl+Shift+C instantly clones your snippet so you can run another version side-by-side.
You can return to saved queries in single click, thanks to the My Queries treeview. Use LINQPad as a scripting tool!
You can call Dump on any WPF or Windows Forms control and LINQPad will render it. This is a great way to write custom visualizers.
In the My Queries treeview, you'll see a query called My Extensions. Here's where you can write methods and classes that will be available to all queries.
Release Notes
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. .
Deployment
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.
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.
New features
The command-line runner and Util.Run are now part of 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.
You can now include namespace declarations in queries of type 'C# Program'.
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 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.
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.
Features not yet completed
Command-line support and Util.Run
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. .
Deployment
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.
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.
New features
The command-line runner and Util.Run are now part of 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.
You can now include namespace declarations in queries of type 'C# Program'.
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 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.
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.
Features not yet completed
Command-line support and Util.Run
Only for V.I.P
Warning! You are not allowed to view this text.