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 ...
...i możesz zacząć swoją zabawę
Jak widzisz nie ma on problemu z klasami anonimowymi.
Chcesz napisać bardziej złożony kod korzystając z "SHIFT+ENTER" możesz dodawać nowe linie jak widać to na obrazku.
Do sesji w każdej chwili możesz dodać 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.
W trakcie działania sesji też możesz zmienić język.
Przykład kodu F# :
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