5 ответов:
вы пробовали смотреть на сборка.Нагрузка.(..)?
Я решил с LINQ
Assembly GetAssemblyByName(string name) { return AppDomain.CurrentDomain.GetAssemblies(). SingleOrDefault(assembly => assembly.GetName().Name == name); }
Это зависит от того, что вы пытаетесь достичь.
Если вы просто хотите получить сборку, то вы должны вызвать
System.Reflection.Assembly.Load()(Как уже указывал). Это связано с тем, что .NET автоматически проверяет, была ли сборка уже загружена в текущий домен приложения, и не загружает ее снова, если она была.Если вы просто пытаетесь Регистрация была ли сборка загружена или нет (по какой-то причине диагностики, возможно), тогда вам нужно выполнить цикл все загруженные сборки.
еще одна причина, по которой вам может понадобиться цикл, - это если вы знаете только часть информации о сборке (например. вы не уверены в версии). То есть, вы знаете достаточно, чтобы "распознать его, когда вы его видите", но недостаточно, чтобы загрузить его. Однако это довольно неясный и маловероятный сценарий.
для тех, кому просто нужно получить доступ к метаданным сборки (версия и т. д.) проверьте сборку.ReflectionOnlyLoad (name), который способен загружать только метаданные, возможно, экономя на памяти и IO.
взгляните на систему.Отображение.Класс сборки, в частности метод Load: MSDN
Comments