LINQPad – plac zabaw dla developera .NET

Z LINQPad korzystam niemalże codziennie. Wykonuje w nim dowolny kod języka C#. Zdarza się, że zastępuje mi Visual Studio. Wyparł całkowicie SQL Server Management Studio we wszystkich rodzajach zapytań SQL do bazy danych. LINQPad jest lekki i szybki (w odróżnieniu od VS i SSMS). Jeśli chcesz przekonać się jak bardzo wartościowe jest to narzędzie, to zapraszam do lektury.

English version here: link

Na wstępie zaznaczę, że posiadam licencję w wersji Premium (info), którą wygrałem na spotkaniu lokalnej grupy .NET (Wroc.NET). Niektóre opisane niżej funkcjonalności są niedostępne w darmowej wersji.

Proste zapytania (Expression)

LINQPad potrafi wykonać dowolny kod w języku C#, VB oraz F#. Zarówno zapytania LINQ, jak i dowolny kod, pisze się zgodnie ze składnią wybranego języka. Narzędzie koloruje kod podczas pisania zgodnie ze standardem.
Wyniki każdego zapytania wyświetlane są w okienku rezultatów. Wyświetlić je można w formie tekstowej (pod spodem jest HTML) lub w gridzie. Dodatkowo dla każdego zapytania wyświetlić można instrukcje IL oraz drzewo wykonywania.

Złożone zapytania (Statements)

LINQPad potrafi wykonywać również szereg poleceń. Funkcjonalność ta jest bardzo przydatna w chwili kiedy chcemy wykonać bardziej skomplikowane operacje. Warto nadmienić również, iż LINQPad w pełni wspiera automatyczne uzupełnianie i podpowiadanie składni (IntelliSense).

Konsolowa aplikacja (Program)

W LINQPad z powodzeniem pisać można konsolowe aplikacje. Zintegrowany debugger daje możliwość śledzenia kodu “krok po krok” i podglądania wartości zmiennych. Bez przeszkód referować można wszystkie komponenty z .NET Framework.

Zewnętrzne biblioteki oraz NuGet

LINQPad daje również możliwość referowania zewnętrznych bibliotek, co daje szerokie perspektywy wykorzystywania tego narzędzia. Gdyby komuś było mało, to prawdziwą rewelacją jest możliwość korzystania z NuGet’owych paczek.

Zapytania SQL (SQL)

Zapytania do baz danych to funkcjonalność, z której korzystam na co dzień. LINQPad świetnie nadaje się do tego, ponieważ nie tylko potrafi wyświetlać wyniki w gridzie, które potem można z powodzeniem edytować, ale również daje możliwość nawigowania pomiędzy relacjami. Wystarczy kliknąć w link, a aplikacja sama pobierze i wyświetli odpowiednie dane. Po wykonaniu zapytania zakładka SQL zawiera “przetłumaczone” zapytanie LINQ na język SQL.

Podczas pracy z bazą danych narzędzie buduje dynamicznie DataContext. Wszystkie operacje z tym związane wykonywane są asynchronicznie w tle by zapewnić jak najlepsze User Experience.

W LINQPad wykonywać można wszystkie rodzaje zapytań SQL. Daje to możliwość nie tylko pobierania i modyfikowania danych, lecz również przekształcania schematu bazy danych. Jeśli zajdzie taka potrzeba, można również wykonywać i edytować procedury składowane oraz funkcje.

Moje przykłady

Wspomniałem wcześniej, że w zapytaniach można wykorzystywać logikę z zewnętrznych bibliotek. Moje przykłady wykorzystują właśnie tą funkcjonalność.
W pierwszym przykładzie, po pobraniu danych z bazy, a jeszcze przed ich wyświetleniem, deszyfruję lub nie pewne informacje w zależności od konkretnego pola.

W drugim przykładzie konwertuję int’a z bazy danych na enum’a z systemu, dzięki czemu wyświetlone wyniki są mniej enigmatyczne (konkretna wartość enum’a jest bardziej czytelna niż liczba).

Wbudowana klasa Util

LINQPad posiada wbudowaną statyczną klasę o nazwie Util, która zawiera kilkadziesiąt pomocnych metod. Metody te posiadają dokumentację, zatem IntelliSense wyświetla podpowiedzi przy każdej z nich. Oto kilka z nich:

  • Break() – zatrzymanie się w debugu podczas działania skryptu
  • ClearResults() – wyczyszczenie okna z wynikami
  • Cmd() – uruchomienie zewnętrznej aplikacji
  • DisplayWebPage() – wyświetlenie strony web
  • Dump() – wyświetlenie wartości w okienku rezultatów
  • GetPassword() – pobranie hasła z menedżera haseł
  • Image() – załadowanie i wyświetlenie obrazka
  • ReadLine() – pobranie informacji od użytkownika
  • Run() – uruchomienie następnego skryptu

Uruchamianie skryptów z linii poleceń (LPRun.exe)

Aplikacja LINQPad wyposażona jest w wykonywalny plik LPRun.exe, którego zadaniem jest uruchamianie/wykonywanie skryptów napisanych w LINQPad (*.linq) z wiersza poleceń (command line). Daje to możliwość zautomatyzowania pewnych operacji/procesu.

Informacje techniczne

LINQPad jest aplikacją typu klient-serwer. Interfejs użytkownika to klient. Każde okienko gdzie wpisujemy kod/zapytanie to serwer z własnym procesem, który uruchamia kod w izolacji.
Najnowszy LINQPad (w wersji 5) kompiluje kod za pomocą bibliotek Microsoft Roslyn. Dzięki temu kod może zawierać najnowsze składnie językowe platformy .NET. Wcześniejsze wersje aplikacji używają .NET CSharpCodeProvider i VBCodeProvider, co znacząco ograniczało składnię.

Podsumowanie

LINQPad to niewielka aplikacja z ogromnymi możliwościami. Możliwość uruchomienia dowolnego kodu z trzech dostępnych języków oraz funkcjonalność komunikacji z bazą danych czynią to narzędzie niezwykle użytecznym w codziennej pracy. Referowanie do zewnętrznych bibliotek oraz możliwość korzystania z NuGet’owych paczek sprawiają że LINQPad jeszcze bardziej funkcjonalny.

Podbij ↑

4 thoughts on “LINQPad – plac zabaw dla developera .NET

  1. Również polecam korzystać z tego narzędzia. Potrafi oszczędzić sporo czasu, gdy nie jesteśmy pewni implementacji, a budowanie apki i testowanie zajmuje więcej czasu.
    Warto też wypróbować C# Interactive dostępne w nowszych Visual Studio (2015+) również umożliwiające testowanie kodu w konsoli. Ładuje nawet zależności z naszego aktualnego projektu.

    • Ax,
      Przez długi czas korzystałem z tego narzędzia bez licencji. Brak podpowiedzi jest uciążliwe, to prawda.
      Niemniej jednak szybkość aplikacji oraz łatwość komunikacji z bazą danych (a w tym operacje CRUD) czyni z niego naprawdę przydatne narzędzie.

Leave a Reply

Your email address will not be published. Required fields are marked *