Uygulamanın Referans Listesini Almak
Ç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;
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.
GetCustomAttributes() method’u ile ilgili assembly‘nin çeşitli meta bilgileri sorgulanabilir. Örneğin;
- AssemblyCompanyAttribute
- AssemblyFileVersionAttribute
- AssemblyTitleAttribute
- AssemblyCopyrightAttribute
- AssemblyDescriptionAttribute
- AssemblyProductAttribute
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);
}