Dziś chciałbym Was przeprowadzić przez proces skompilowania, uruchomienia i debuggowania .NET Core - czyli wersji open source środowiska .NET. Bez zbędnych wstępów przejdźmy do odpowiedzi na proste pytanie...
Po co?
Żeby bawić się, żeby bawić się, żeby bawić się na całego. Mamy źródła .NETa! Po co nam je kompilować? Żeby grzebać, zmieniać, analizować, psuć - aż w końcu wynajdziemy dla siebie miejsce na Pull Request i zapiszemy się w Hall Of Fame, a nasz kod powędruje na miliony komputerów na całym świecie!
A nawet jeśli nie mamy tak ambitnych planów, czy nie fajnie popatrzeć "do środka", jak działa .NET? Oczywiście CoreCLR to nie jest kod komercyjnego .NETa jeden-do-jednego. Ale zdecydowana większość trzewiów jest taka sama, więc jest się czym bawić. Na stronie .NET foundation mówią wprost:
.NET Core has two major components. It includes a small runtime that is built from the same codebase as the .NET Framework CLR. The .NET Core runtime includes the same GC and JIT (RyuJIT), but doesn’t include features like Application Domains or Code Access Security. (...)
.NET Core also includes the base class libraries. These libraries are largely the same code as the .NET Framework class libraries, but have been factored (removal of dependencies) to enable us to ship a smaller set of libraries.
Jeśli zatem coś nas pociąga w spojrzeniu w kod frameworka, którego używamy od lat, mamy ku temu okazję. Więcej...
Czy znacie narzędzie NDepend? Służy do statycznej analizy jakości kodu. Istnieje w świecie .NET już od wielu lat i zyskał zasłużoną renomę. Pisał o nim ostatnio Piotr Gankiewicz, zwycięzca konkursu Daj się poznać, którym przeanalizował swój projekt Warden. I mi nadarzyła się okazja by przyjrzeć się temu narzędziu bliżej. Kilka lat temu bawiłem się nim na potrzeby analizy projektów w pracy. A teraz zapragnąłem nim przebadać coś nieswojego, coś dużego - .NET Core. Jesteśmy szczęściarzami, że żyjemy w czasach, w których .NET ma swoją wersję Open Source. A skoro tak, to kto nam zabroni ocenić jakoś kodu pisanego przez sam Microsoft i zebrane wokół community? Warto tu nadmienić, że NDepend potrafi analizować skompilowane assembly więc tak naprawdę nie musiałbym się ograniczać do .NET Core tylko wziąć na tapetę ten komercyjny, dojrzały .NET Framework. Ale uważam, że podpatrzenie tego, co możemy ew. zmienić jest po prostu fajniejsze. Więcej...