Caricare fortemente nome assembly da percorso specifico?
-
29-09-2019 - |
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?
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;