Interactive Okno, które daje możliwość pisania interaktywnego kodu w C# nie jest czymś nowym w .NET. Jednak zawsze brakowało czegoś co dało efekt wow.

Bądź szczerzy, ale umiejętności pisania kodu w konsoli to fajny bajer do powalenia na kolana innego programistę.

dotnet-reply , który domyślnie korzysta z Specter.Console pozwoli taki efekt tobie zrobić.

Wpisujesz polecenie : dotnet tool install --global dotnet-repl ...

INSTALACJA dotnet-reply

...i możesz zacząć swoją zabawę

okno powitalne w .net reply

Jak widzisz nie ma on problemu z klasami anonimowymi. 

klasami anonimowa w dotnet reply

Chcesz napisać bardziej złożony kod korzystając z "SHIFT+ENTER" możesz dodawać nowe linie jak widać to na obrazku.

Przykład dodania SHIFT+ENTER nowej linji w dotnet reply

Do sesji w każdej chwili możesz dodać paczki NuGet.

Wyświetlenie obrazka w dotnet-reply oraz dodanie paczki NuGet

Chciałbyś popisać w innym języki programowania np. w F#. Nie ma problemu możesz zmienić domyślne wywołanie interpretera kodu. 

a-07.PNG

W trakcie działania sesji też możesz zmienić język. 

a-08.PNG

Przykład kodu F# :

Przykład kodu F# dotnet reply

Dodatkowo cały ten mechanizm współpracuje plikami .ipynb lub .dib z Interactive Notebooks. Akurat o tym jeszcze nie zrobiłem wpisu (poprawka zrobiłem), ale ostatnio pojawiła się moda pisania w różnych językach programowania skryptów interaktywnych.

dotnet repl --notebook /path/to/notebook.ipynb

W sumie, zamiast próbować pisać skrypty systemowe w PowerShell to dlaczego nie zrobić coś podobnego w innym języku programowania. Nie chciałbyś w oknie pokazać wykres pisząc parę linijek kodu w JavaScript lub C#.

A możesz jeszcze lepiej co powiesz na zmianę konfiguracji przy pomocy kodu napisanego w C# w konsoli lub w Interactive Notebooks. 

Przynajmniej jeśli chodzi o pisanie kodu w wierszu poleceń to problem jest oczywisty. Nie ma w nim na razie Intellisense, który by Ci podpowiedział co masz pisać. 

Zanim zaczniesz swoją zabawę warto zapoznać się skrótami w dotnet-reply

  • Enter : Uruchom wpisany kod
  • Shift+Enter Dodaj nową linijkę do kodu
  • Tab Pokaż następny wykonany kod
  • Shift-Tab Pokaż poprzedni wykonywany kod
  • Ctrl-C Wyjście z REPLY
  • Ctrl-Up Spaceruj po historii wpisanych poleceń. Do tyłu. Tylko obecna sesja
  • Ctrl-Down Spaceruj po historii wpisanych poleceń. Do przodu. Tylko obecna sesja

To wszystko. Może znajdę czas na sprawdzenie jaki efekt "wow" robią Interactive Notebooks. W sumie to bym nawet sprawdził co nowego w LinqPad.

Podobne rozwiązanie istniało już wcześniej i możesz zobaczyć je tutaj : https://github.com/waf/CSharpRepl