RSS

C# ve Reflection kullanarak bir dizindeki .NET .dll dosyaları içinde tür arama

06 Sep

Castle projesinin MonoRail‘i ile uğraşırken bir C# dosyası içinde geçen WebContainer türünden bir nesne problem çıkardı. Asıl derdim böyle bir tür yani böyle bir C# sınıfı (türü) olup olmadığını ve varsa hangi .dll dosyası içinde bulunduğunu anlamaktı. Bunun için tabii ilk akla gelen Lutz Roeder’in Reflector‘ını kullanmak olabilirdi ancak burada söz konusu olan tek bir .dll dosyasını (assembly’yi) detaylı ve grafik ortamda incelemek değil bir grup .dll dosyası üzerinden hızlıca arama yapabilmekti.

Bunun için .NET ve C#’ın “reflection” özelliklerinden faydalanarak belli bir dizin içindeki tüm .dll dosyalarını tarayan ve içlerindeki sınıf (tür) isimlerini listeleyen kısa bir program yazdım. (Programın pastebin.ca üzerindeki kaynak koduna buradan erişmek mümkün.)

Ardından Windows 2000 sistemime GNU Utilities for Win32‘yi kurdum (ve kurulum dizinin sistem “path” değişkenine ekledim). Böylece artık D:Program FilesCastleBinnet-2.0 dizinine gidip ClassExplorer . | grep -i web gibi bir komut çalıştırmak sureti ile tüm .dll dosyaları içinde küçük büyük harf ayrımı olmaksızın içinde “web” geçen tür isimlerini arayabiliyorum (72 tane .dll var, toplamları yaklaşık 7.5 MB ve arama sonuçlarının listelenmesi yaklaşık 3.5 – 4 saniye sürüyor).

Programın şu anda pek çok eksiği gediği var. Duruma ve ihtiyaçlara göre kolayca ekleme yapmak mümkün. Üçüncü parti yazılımların .dll dosyaları ile kaynak kodları içinde gezinmeden arama tarama yapmak için bu tür ve benzeri programlar faydalı olabilir.

Not: Şu anda çalışmayan komut satırından keyfi dizin verme işlevselliğini gerçekleştirmek ve dışsal grep bağımlılığı yerine dahili .NET düzenli ifade desteğinden faydalanmak iyi olabilir (yine de insan “tek bir işi iyi yapan programlardan oluşan bilgi işlem zinciri” şeklindeki UNIX mantalitesine alıştı mı bundan kolay kolay vazgeçmek istemiyor ;-))

Advertisements
 
2 Comments

Posted by on September 6, 2006 in .NET, General, Programlama

 

2 responses to “C# ve Reflection kullanarak bir dizindeki .NET .dll dosyaları içinde tür arama

  1. hakan

    March 12, 2011 at 17:13

    object browser?

     
  2. ugur

    December 21, 2012 at 01:28

    hocam bu programı paylaşma şansınız varmı bu tür bir progama ihtiyacım var c# ta da paylaşırsanız sevinirim..kolay gelsin..

     

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: