Sublime TextMasz już dosyć setki utworzonych aplikacji konsolowych w Visual Studio tylko po to by sprawdzić jak dana klasa lub kod działa?
Czy istnieje jakiś lepszy sposób na prototypowanie kodu? Czy istnieje jakiś lepszy sposób na pokazanie kodu demo?
A może do tego chciałbyś mieć w pełni interaktywne doświadczenie z kodem C#.
Otóż to wszystko jest teraz możliwe z ScriptCS. O dziś można uruchamiać kod napisany w C# tak jakby to był kod skryptowy.
Mały wstęp do Script CS już opisałem wcześniej. Instalacja ScriptCS od tamtej pory nie zmieniła się. W powershell wpisujesz następującą komendę by zainstalować “Chocolatey”.
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
Później używać Chocolatey instalujesz w CMD ScriptCS przy pomocy polecenia:
cinst scriptcs
Teraz gdy masz zainstalowany SciriptCS. Jak napisać w nim kod skryptowy w c#.
CMD wydaje się nudne więc dlaczego tego nie zrobić w Sublime Text.
Sublime Text 3
Jeśli nie masz zainstalowanego pluginu “Package Controle” w Sublime Text. Najwyższy czas to zrobić. Korzystając ze skrótu CTRL + ` wywołaj konsole i wpisz następujące polecenie. Więcej informacji tutaj: https://packagecontrol.io/installation
import urllib.request,os,hashlib; h = '2deb499853c4371624f5a07e27c334aa' + 'bf8c4e67d14fb0525ba4f89698a6d7e1'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)
Teraz gdy mamy plugin Package Controle nadszedł czas zainstalować plugin “Script CS”.
Używając skrótu SHIFT CTRL+ P wywołuje fajnie globalne menu które wyświetla mi wszystkie opcje Sublime Text 3. Fachowo nazywa się to “paleta poleceń”.
W polu tekstowym wpisuje “install”, a potem wybieram opcje Install Package:
Z listy wszystkich dostępnych paczek wybieram ScriptCS.
Czy wszystko działa?
Napiszmy prosty kod. Zanim jednak to zrobimy warto ustawić kolorowanie składni na ScriptCS. Skrót CTRL+SHIFT+P i do pola tekstowego wpisujemy “ScriptCS”.
Niestety plugin do Sublime Text nie posiada podpowiadacza.
Używając skrótu CTRL + B wywołasz napisany kod.
By kod jednak mógł się wywołać sam Submile Text musi być wywołany z uprawieniami Administratora.
Alternatywnie musisz napisany skrypt zapisać do pliku w jakieś sensownej lokalizacji na dysku.
Napiszmy bardziej zawansowany kod:
using System;
using System.IO;
using System.Web.Http;
using System.Web.Http.SelfHost;
var address = "http://localhost:8080";
var conf = new HttpSelfHostConfiguration(new Uri(address));
conf.Routes.MapHttpRoute(name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
var server = new HttpSelfHostServer(conf);
server.OpenAsync().Wait();
Console.WriteLine("Working...");
Console.ReadKey();
Ten kod utworzy samo hostujące się WEB API. Niestety brakuje nam referencji. Jak je dodać.
Otóż wciskając CTRL+B tak naprawdę wywołujemy polecenie cmd.
Musimy znaleźć sposób na uruchomienie CMD w Submile Text.
Warto zainstalować kolejny plugin “Shell Turtlestein” do Submile Text który otworzy CMD w miejscu nad którym obecnie pracujesz.
Istnieje jeszcze lepszy plugin.
“Shell Command” pozwala na uruchomienie poleceń wewnątrz SubmileText.
Pozostało już tylko wywołać polecenie CMD.
W polu tekstowym “Shell Command” trzeba napisać polecenie
scriptcs -install Microsoft.AspNet.WebApi.SelfHost
Zainstaluje ono paczki w miejscu gdzie się znajdujemy.
Nawet jeśli paczki masz zainstalowane twój kod w C# może nie działać bo nie uruchomiłeś programu z uprawieniami Administratora.
Polecenia CMD w Submile są trochę ograniczone.
Nie udało mi się odpalić swojego serwera w Submile Text (program stoi) w CMD już tak. By to potwierdzić przed definicją serwera dodałem napis Start. Być może jest to wina pluginu.
Spróbujmy więc do problemu podejść jeszcze inaczej.
Co możemy jeszcze zrobić w Submile Text oprócz pisania skryptów w C#.
Możemy w nim odpalić REPL.
Dzięki REPL użytkownik może wprowadzać polecenia, które zostaną wykonane a ich wynik wypisany na ekran.
Z pomocą przychodzi kolejny plugin SublimeREPL.
https://packagecontrol.io/packages/SublimeREPL
Teraz zrestartuj Submile Text 3.
Korzystając z palety poleceń wybierz : SublimeREPL: ScriptCS.
Teraz możesz pisać polecenia w C# w konsoli REPL, a nie tylko w pliku tekstowym.
Teraz gdy mamy REPL oznacza to, że też możemy mieć normalne okno poleceń.
Teraz wszystko działa . Pamiętaj by uruchomić Sublime Text z uprawieniami Administratora.