В качестве альтернативы, если сборка была загружена в первую очередь, для проверки информации о сборке, такой как publicKey, лучшим способом было бы не загружать ее, а проверять информацию, сначала загружая только AssemblyName :
AssemblyName an = AssemblyName.GetAssemblyName ("myfile.exe");
byte[] publicKey = an.GetPublicKey();
CultureInfo culture = an.CultureInfo;
Version version = an.Version;
EDIT
Если вам нужно отразить типы в сборке, не добавляя сборку в домен приложения, вы можете использовать метод Assembly.ReflectionOnlyLoadFrom
.
это позволит вам взглянуть на их типы в сборке, но не даст вам возможности их создать, а также не загрузит сборку в домен приложений.
Посмотрите на этот пример как объяснение
public void AssemblyLoadTest(string assemblyToLoad)
{
var initialAppDomainAssemblyCount = AppDomain.CurrentDomain.GetAssemblies().Count(); //4
Assembly.ReflectionOnlyLoad(assemblyToLoad);
var reflectionOnlyAppDomainAssemblyCount = AppDomain.CurrentDomain.GetAssemblies().Count(); //4
//Shows that assembly is NOT loaded in to AppDomain with Assembly.ReflectionOnlyLoad
Assert.AreEqual(initialAppDomainAssemblyCount, reflectionOnlyAppDomainAssemblyCount); // 4 == 4
Assembly.Load(assemblyToLoad);
var loadAppDomainAssemblyCount = AppDomain.CurrentDomain.GetAssemblies().Count(); //5
//Shows that assembly is loaded in to AppDomain with Assembly.Load
Assert.AreNotEqual(initialAppDomainAssemblyCount, loadAppDomainAssemblyCount); // 4 != 5
}