İlkay İlknur

just a developer...

.NET Framework'ün Source Code'una Erişim Artık Daha Kolay

Her developer öyle veya böyle kod yazdığı platformda kullandığı kütüphanelerin arkasında yazılan kodu merak eder :) Tabi en çok da uygulamasında bir bug olduğunda :)

.NET tarafındaki librarylerin source code'larına eskiden zaten erişebiliyorduk. Ancak framework versiyonları ilerledikçe source code'a eriştiğimiz kaynak framework'ün hızına yetişemedi ve zamanla eski ve kullanılamaz hale ulaştı.

.NET Framework 4.5.1 ile beraber artık .NET Reference Source sitesi yenilendi ve yeni yüzüyle developerlara açıldı. Artık çok daha hızlı bir şekilde .NET Framework source code'u içerisinde gerek web sayfası üzerinden gerekse Visual Studio üzerinde gezinebiliyoruz. Visual Studio tarafındaki detaylara geçiş yapmadan önce kısaca bir websitesine bakalım.

Siteyi ilk açtığımızda sağ tarafta site içerisinde indekslenen assemblylerin listesini görüyoruz. Eğer kodunu görmek istediğiniz tipin hangi assembly içerisinde olduğunu biliyorsanız buradan hızlı bir şekilde istediğiniz kontrole erişmeniz mümkün.

Sağdaki listeden örnek olarak mscorlib assemblysini seçersek karşımıza alternatif olarak 2 görünüm geliyor. Bunlar Project ve Namespace görünümü. Bu 2 alternatif görünümü de kullanarak aradığımız tipe ulaşmamız mümkün.

Manuel olarak ilerlemek yerine adını bildiğiniz tipe search yaparak da erişebilirsiniz. Böylece assembly ve namespaceler ile uğraşmadan doğrudan istediğiniz tipin koduna erişebilirsiniz. Örneğin diyelim ki System.Collections.Generics namespace'i içerisindeki List<T> tipinin kodunu bulmak istedik. Doğrudan searche List<T> yazmamız yeterli. Böylece çok daha hızlı bir şekilde istediğimiz koda erişebilmekteyiz.

Diyelim ki search veya assembly üzerinden navigasyonla istediğimiz tipi bulduk ve kodlara eriştik. Kodlar üzerinde de gezinmemiz oldukça kolay. Tıpkı Visual Studio'da olduğu gibi herhangi bir metodun üzerine tıklarsanız doğrudan o metodun koduna erişebilirsiniz.

Web sitesindeki kod üzerinde yaptığınız her gezintide site url'inin değiştiğini göreceksiniz. Site url'i üzerinde sizin o anda gezindiğiniz kod dosyası ve satır numarası saklanıyor. Böylece eğer arkadaşınıza "Bak List<T> tipi içerisinde şöyle bir şey buldum" :) demek isterseniz göndereceğiniz link arkadaşınızı doğrudan ilgili kod satırına yönlendirecektir.

http://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs#241

Visual Studio Üzerinden .NET Framework Koduna Erişim

Diyelim ki yazdığınız uygulamayı debug ediyorsunuz ve debug ederken de .NET Framework içerisindeki kodu da debug etme ihtiyacınız doğdu. Bunun için şuradaki ayarları Visual Studio üzerinden yapmanız gerekiyor. Eğer tüm bu ayarlarla uğraşmak istemiyorsanız Visual C# MVP'si Schabse Laks'ın geliştirdiği Ref12 extension'ını kurabilirsiniz. (Extension Visual Studio 2010 ve üzerini destekliyor.)

Extension'ı yükledikten sonra kodunu görmek istediğiniz tipin üzerine gelip Go To Definition'a tıklarsanız doğrudan ilgili tipin koduna navige olabiliyorsunuz.

Eğer tüm .NET Framework'ün source code'unu indirmek isterseniz doğrudan buradaki linki kullanabilirsiniz. Visual Studio kullanarak kod üzerinde gezmek eminim daha iyi hissetirecektir sizi :)

Herşey ROSLYN Sayesinde Daha Kolay !

Tüm bu sistem nasıl yapıldı ? Bu kadar data nasıl elde edildi ? diye merak ediyor olabilirsiniz. :)

Bu sistemin arka planında Roslyn var. Roslyn sayesinde framework kodu derlenirken site içerisinde gördüğünüz herşey alınıp ayrı bir veri saklama alanına konuluyor. Sonrasında da alınan datalar üzerinde search özelliği siteye ekleniyor ve görmüş olduğunuz site çıkmış oluyor. Aslında buna benzer siteyi Roslyn kullanarak kendi kodlarınız içinde yapmanız mümkün. Diyelim ki şirket olarak bir SDK yazıyorsunuz ve SDK içinde bir developer portal yapıp SDK içerisindeki classları ve metotların açıklamalarını koyacaksınız. İşte Roslyn kullanmak için süper bir sebep :)

Roslyn ile ilgili yakında daha çok şey duymaya başlayacağız. Ancak şimdilik benim verebileceğim bilgiler bu kadar. :) Nisan ayında BUILD konferansından sonra daha rahat bir şekilde konuşabileceğimi tahmin ediyorum  ;)



Yorum Gönder