Potrzebuję metody, która pobiera typ i zwraca ścieżki wszystkich złożeń, które były używane w typie. pisałem tak:Uzyskiwanie ścieżek złożeń używanych w Type
public 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;
}
}
Generalnie ta metoda wykonać pracę, ale mają pewne wady:
nie znalazłem jak uzyskać odwołuje zespoły/ów samego typu, tak użyłem type.Assembly.GetReferencedAssemblies() i otrzymałem referencje całego zespołu, a nie tylko te związane z typem.
type.Assembly.GetReferencedAssembly() zwraca AssemblyName i nie ma właściwości location/path/filepath. Aby uzyskać właściwość lokalizacji, najpierw użyłem Assembly.Load(), a następnie użyłem właściwości location. Nie chcę, aby zespoły ładujące pobierały swoją ścieżkę, ponieważ nie są potrzebne, a ponieważ Assembly.Load() może zawieść z FileNotFoundException lub BadImageFormatException.
Wszystkie typy należą do złożeń - powinieneś być w stanie wykonać typ.Assembly.GetReferencedAssembly(). Och, czekaj, już to robisz. Zakładam, że to i tak długo jest rozwiązane, prawda? 2011? –
@DxCK jakieś rozwiązanie dotyczące tego problemu? Mój problem: Projekt My Library odwołuje się do Oracle.DataAccess 4.112.2.0, ale w czasie wykonywania ładuje się z GAC Oracle.DataAccess 4.121.1.0. Assembly.GetReferencedAssembly() daje mi Oracle.DataAccess 4.112.2.0 nie Oracle.DataAccess 4.121.1.0. – Kiquenet
Aby użyć, wywołaj 'var results = this.GetType(). GetReferencesAssembliesPaths();'. – Contango