Come faccio a caricare dinamicamente assemblee prime che contiene il codice non gestito? (Bypassando 'il codice di controllo fallita politica Unverifiable' eccezione)

StackOverflow https://stackoverflow.com/questions/2945080

Domanda

ho intenzione di dare un esempio di utilizzo System.Data.SQLite.DLL che è un misto montaggio con codice non gestito:  Se eseguo questo:

  var assembly= Assembly.LoadFrom("System.Data.SQLite.DLL")

Non ci sono eccezioni sono gettati, ma se faccio questo:

  var rawAssembly = File.ReadAllBytes("System.Data.SQLite.DLL");
  var assembly = Assembly.Load(rawAssembly);

Il CLR lancia un FileLoadException su "Vedi codice di politica fallimentare Unverifiable (eccezione da HRESULT: 0x80131402).".  Diciamo che sto cercando di caricare questa assemblea su un bambino AppDomain, come posso personalizzare la sicurezza del dominio di applicazione per permettere a me passare il controllo della politica?

È stato utile?

Soluzione

Siamo vittima di un messaggio di eccezione scadente. Caricamento assiemi con Assembly.Load (byte []) contenenti codice non gestito non è supportato. Questo è l'oggetto di questo elemento positivo .

UPDATE: la voce di feedback collegato è andato, cancellato come parte della pulizia in VS2012 tempo di rilascio. L'unica parte di esso potrebbe ancora recuperare è questo frammento, copiato da un'altra pagina web:

  

“[...] ci consentono solo le immagini ILOnly da caricare [...] in quanto qualsiasi altra cosa non è sicuro” -

UPDATE:. Collegamento fisso con archive.org copia di backup

Altri suggerimenti

Il problema è che il CLR non esegue le normali fasi di carico DLL - come mappatura delle DLL sezioni separate in pagine diverse, regolando correzioni, ecc Quando un assembly viene caricato dal byte grezzi, quei byte grezzi vengono mappati in memoria, come è, e solo gestito meta-dati vengono letti. Nessuna quantità di impostazioni prove o di sicurezza cambierà questo comportamento.

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