Domanda

Sto facendo un addin sistema in cui la principale applicazione di carichi assemblee Addin1.dll e Addin2.dll in runtime nel nuovo dominio di applicazione dell'.

Tuttavia, nel caso in cui Addin1.dll è firmato (nome forte) con la mia chiave e Addin2.dll non è, voglio essere in grado di caricare solo Addin1.dll e rifiutare Addin2.dll.

Sto sospettando che deve essere fatto mediante l'impostazione di alcuni parametri in AppDomainSetup?

È stato utile?

Soluzione

Esaminare la metodo Assembly.Load che accetta un parametro Evidence. È possibile trovare un esempio di come creare una prova dalla chiave pubblica qui .

Altri suggerimenti

È possibile implment un DomainManager e basare la decisione di carico / blocco è su quello che vuoi. Ho risposto un po 'correlata domanda qui.

È possibile utilizzare Metodo Load della classe AppDomain per caricare la nuova assemblea nel dominio di applicazione, a condizione che l'assemblea editore criterio è soddisfatto se il cliente o l'utente finale ambiente.

Anche il forte assembly denominato segue tutte le regole stabilite dall'editore dell'assemblea e del CLR.In modo che l'utente dell'assemblea deve soddisfare l'aspetto della sicurezza dell'assemblea vengono caricati nel dominio di applicazione.

Il CLR carichi di riferimento global assembly dal GAC utilizzando la proprietà del nome sicuro.Se l'assembly di riferimento è disponibile nella global assembly cache, CLR suo contenenti sottodirectory e i file tenendo premuto il manifesto è stato caricato.Trovare il montaggio in questo modo assicura il chiamante che l'assembly caricati a runtime è venuto dalla stessa casa editrice che ha costruito l'assemblea il codice è stato compilato.Ora il confronto di token di chiave pubblica in riferimento assemblea assemblyRef tavolo e token di chiave pubblica di riferimento dell'assemblea AssemblyDef tabella.Se l'assembly di riferimento non è il GAC, CLR cerca nell'applicazione della directory di base e poi in privato i percorsi individuati nel file di configurazione dell'applicazione;se l'applicazione contenente l'assemblea è installato utilizzando il driver MSI, poi CLR richiama MSI per caricare il montaggio.SE l'assemblea non si trova in nessuna di queste, viene generata un'eccezione e, infine, l'associazione di assembly ha esito negativo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top