В качестве альтернативы, если сборка была просто загружена в первую очередь, чтобы проверить информацию сборки, как publicKey, лучший способ - не загружать ее и, скорее, проверять информацию, сначала загружая только AssemblyName :
AssemblyName an = AssemblyName.GetAssemblyName ("myfile.exe");
byte[] publicKey = an.GetPublicKey();
CultureInfo culture = an.CultureInfo;
Version version = an.Version;
EDIT
Если вам нужно отразить типы в сборке, не получая сборку в своем домене приложения, вы можете использовать метод Assembly.ReflectionOnlyLoadFrom
. это позволит вам просматривать их типы в сборке, но не позволяет создавать их, а также не будет загружать сборку в AppDomain.
Посмотрите на этот пример как exlanation
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
}