Jednym z moich ulubionych narzędzi w systemie operacyjnym Linux jest apt. Aby zainstalować aplikację wystarczy w shellu wpisać apt-get install nazwa_aplikacji. Apt pobiera z repozytorium pakiet wraz z zależnościami i po krótkiej (lub dłuższej) chwili mamy aplikację gotową do uruchomienia.

hornget jest takim apt dla programistów .NET. Dzięki niemu w prosty sposób można automatycznie uaktualnić binaria kilkunastu projektów używanych na codzień (m.in. NHibernate, NHContrib, MVCContrib, Rhino Tools).

Aby móc skorzystać z dobrodziejstw hornget należy zainstalować TortoiseSVN, msysgit oraz Windows Powershell. Do zmiennej systemowej %PATH% dodajemy katalogi C:\Program Files\Git\bin i C:\Program Files\Git\cmd. Następnie uruchamiamy Powershell i wykonujemy polecenie set-ExecutionPolicy RemoteSigned - dzięki temu hornget będzie mógł korzystać z Powershella.

Najnowsze źródła projektu hornget pobieramy stąd (w dalszej części artykułu przyjmę, że źródła horngeta mamy w katalogu C:\sources\horn). Następnie w pliku C:\sources\horn\src\Horn.Console\Program.cs w metodzie GetRootFolderPath zmieniamy linię:

var ret = new DirectoryInfo(rootFolder);

na:

var ret = new DirectoryInfo(
    string.Format("C:\sources\horn\{0}", PackageTree.RootPackageTreeName));

W shellu uruchamiamy C:\sources\horn\src\hornbuild.bat i jeśli wszystko do tej pory zostało zrobione poprawnie, otrzymamy komunikat BUILD SUCCEEDED. Skompilowana aplikacja znajduje się w katalogu C:\sources\horn\src\build\net-3.5\debug.

Jeśli chcemy pobrać najnowsze źródła NHibernate, wystarczy wpisać w linii komend: horn -install:nhibernate. Proces pobierania i kompilowania zależności trwa kilka minut. Gotowe binaria trafią do katalogu C:\sources\horn\.horn (NHibernate w szczególności tu: C:\sources\horn\.horn\orm\nhibernate).

Dla mnie szczególnie ważne jest, że do horngeta można dodać własną konfigurację, dzięki czemu zamiast monotonnej aktualizacji i kompilacji źródeł zewnętrznych bibliotek wywołamy po prostu: horn -install:moj_projekt i możemy iść na kawę.:) Wystarczy utworzyć katalog C:\sources\horn\.horn\moj_projekt, skopiować do niego plik konfiguracyjny samego horngeta C:\sources\horn\.horn\builders\horn\horn.boo i dostosować go do własnych potrzeb. Jego zawartość jest na tyle prosta, że potrwa to kilka chwil, a oszczędność czasu przy projekcie z wieloma zależnościami może być naprawdę ogromna.

Horngeta wykorzystuję w praktyce do aktualizacji frameworka S#arp Architecture mającego pokaźną listę zależności. Wcześniej ręczna aktualizacja narzędzia i bibliotek zależnych wymagała sporo czasu i żmudnego klikania w TortoiseSVN oraz msysgit. Teraz wywołuję w konsoli: horn -install:sharp.architecture, a po kilku minutach kopiuję binaria do właściwego miejsca w projekcie.