Sublime TextMasz już dosyć setki utworzonych aplikacji konsolowych w Visual Studio tylko po to by sprawdzić jak dana klasa lub kod działa?

ConsoleApp

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

Chocolatey instalacja 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:

Install Package

Z listy wszystkich dostępnych paczek wybieram ScriptCS.

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”.

Składnia ScriptCS

Niestety plugin do Sublime Text nie posiada podpowiadacza.

Składnia ScriptCS

Używając skrótu CTRL + B wywołasz napisany kod.

CTRL + B

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ć.

CMD 1

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.

Shell Command

Pozostało już tylko wywołać polecenie CMD.

CMD

W polu tekstowym “Shell Command” trzeba napisać polecenie

scriptcs -install Microsoft.AspNet.WebApi.SelfHost

scriptcs -install Microsoft.AspNet.WebApi.SelfHost

Zainstaluje ono paczki w miejscu gdzie się znajdujemy.

Intall Packeges

Nawet jeśli paczki masz zainstalowane twój kod w C# może nie działać bo nie uruchomiłeś programu z uprawieniami Administratora.

Administraotor

Working

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.

Start

Start 2

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 Sublime​REPL.

https://packagecontrol.io/packages/SublimeREPL

REPL

Teraz zrestartuj Submile Text 3.

Korzystając z palety poleceń wybierz : SublimeREPL: ScriptCS.

SublimeREPL: ScriptCS.

Teraz możesz pisać polecenia w C# w konsoli REPL, a nie tylko w pliku tekstowym.

ScriptCS

Teraz gdy mamy REPL oznacza to, że też możemy mieć normalne okno poleceń.

REPL Shell

Teraz wszystko działa Uśmiech. Pamiętaj by uruchomić Sublime Text z uprawieniami Administratora.

REPL Shell