'da kullanılan derleme yollarını edinin. Type alan ve türünde kullanılan tüm derlemelerin yollarını döndüren bir yönteme ihtiyacım var.Tip
Genelliklepublic static IEnumerable<string> GetReferencesAssembliesPaths(this Type type)
{
yield return type.Assembly.Location;
foreach (AssemblyName assemblyName in type.Assembly.GetReferencedAssemblies())
{
yield return Assembly.Load(assemblyName).Location;
}
}
bu yöntem bir iş, ama var bazı dezavantajları: Bunu yazdım
Ben başvurulan derlemeler nasıl tespit etmedi/türü kendisinden tipleri, böylece Ben type.Assembly.GetReferencedAssemblies() 'ı kullandım ve yalnızca türüyle ilgili olanları değil, tüm montajın referanslarını aldım.
type.Assembly.GetReferencedAssemblies() AssemblyName değerini döndürür ve konum/yol/dosya yolu özelliği yoktur. Konum özelliğini almak için önce Assembly.Load() öğesini kullandım ve sonra konum özelliğini kullandım. Yolları almak için yükleme derlemelerini istemiyorum çünkü gerekli olmadıklarından ve Assembly.Load() FileNotFoundException veya BadImageFormatException ile başarısız olabilir.
Tüm türler derleme gruplarına aittir - sadece türünü yapabilmeniz gerekir.Assembly.GetReferencedAssemblies(). Oh bekle, bunu zaten yapıyorsun. Bunun uzun süredir çözüldüğünü farz ediyorum, değil mi? 2011? –
@DxCK bu sorun hakkında herhangi bir çözüm mü? Sorunum: Kitaplığım projesi Oracle.DataAccess 4.112.2.0, ancak yürütme süresinde, GAC Oracle.DataAccess 4.121.1.0. Assembly.GetReferencedAssemblies() Oracle.DataAccess 4.112.2.0 Oracle.DataAccess 4.121.1.0 değil. – Kiquenet
Kullanmak için, 'var results = this.GetType(). GetReferencesAssembliesPaths();' işlevini çağırın. – Contango