Çalışma zamanında (Run-Time) uygulamanın referans olarak kullandığı assembly‘lerin (dll) listesini almak için aşağıdaki LINQ sorgusunu kullanabilirsiniz;
var assemblies = from assemblyName in Assembly.GetExecutingAssembly().GetReferencedAssemblies() let assembly = Assembly.Load(assemblyName) let companies = assembly.GetCustomAttributes(typeof(AssemblyCompanyAttribute), false) where companies.Length > 0 && (companies[0] as AssemblyCompanyAttribute).Company != “Microsoft Corporation” select assembly;</pre>
Assembly sınıfının static GetExecutingAssembly() method’unu kullanarak çalışan assembly‘ye ulaşabiliriz.
GetReferencedAssemblies() method’u ilgili Assembly‘nin referans olarak kullandığı assembly‘lerin listesini döndürür.
Assembly sınıfının static Load() method’u ile ilgili assembly hafızaya yüklenir.
</a>GetCustomAttributes() method’u ile ilgili assembly‘nin çeşitli meta bilgileri sorgulanabilir. Örneğin;
AssemblyCompanyAttribute bilgisini aldıktan sonra, Microsoft Corporation değerinden farklı olduğunu kontrol ederek, Microsoft firması haricinde firmaların referans assembly‘lerini bulabiliriz.
Son olarak, basit bir foreach döngüsü ile assembly listesini ekrana yazdırabiliriz;
foreach (var assembly in assemblies) { Console.WriteLine(assembly.FullName); }
Senior Software Engineer, @Microsoft
Ada ve Ege'nin babası ;)
Makale Adedi: 484