Domanda

ho un forte-di nome di montaggio, installato in una cartella specifica (e non il GAC).

Il nome, come mostrato in Reflector è:

"Foo.Bar.TreeFrog, Version=1.2.1.0, Culture=neutral, PublicKeyToken=ac88c4a8b22089b4"

e il percorso in cui è installato è

"c:\\QueueBall"

È possibile utilizzare Assembly.Load o Assembly.LoadFrom per caricarlo, e se sì, come?

Posso assicurare che il forte di denominazione è onorato, vale a dire che la DLL sto caricando in realtà è quello che mi aspetto e non un impostore con lo stesso nome?

È stato utile?

Soluzione

Si potrebbe utilizzare LoadFrom :

var assembly = Assembly.LoadFrom(@"c:\QueueBall\Foo.Bar.TreeFrog.dll");

Si noti che questo sarà anche caricare assembly referenziati nel dominio applicazione in esecuzione di questo codice. Se non si desidera che questo comportamento è possibile utilizzare il href="http://msdn.microsoft.com/en-us/library/b61s44e8.aspx" rel="noreferrer"> LoadFile metodo


UPDATE:

È possibile controllare l'identità di montaggio prima di caricarlo per assicurarsi che non sia stato manomesso:

AssemblyName an = AssemblyName.GetAssemblyName(@"c:\QueueBall\Foo.Bar.TreeFrog.dll");
byte[] key = an.GetPublicKey();
Version version = an.Version;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top