Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo AppDomain.DefineDynamicAssembly (AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>)

 

Data di pubblicazione: ottobre 2016

obsoleteCodeEntityM:System.AppDomain.DefineDynamicAssembly(System.Reflection.AssemblyName,System.Reflection.Emit.AssemblyBuilderAccess,System.String,System.Boolean,System.Collections.Generic.IEnumerable{System.Reflection.Emit.CustomAttributeBuilder}) Nota: Questa API è ora obsoleta.

Definisce un assembly dinamico con il nome, la modalità di accesso, la directory di archiviazione, l'evidenza, le richieste di autorizzazione, l'opzione di sincronizzazione e gli attributi personalizzati specificati.

Spazio dei nomi:   System
Assembly:  mscorlib (in mscorlib.dll)

[ObsoleteAttribute("Assembly level declarative security is obsolete and is no longer enforced by the CLR by default. See http://go.microsoft.com/fwlink/?LinkID=155570 for more information.")]
public AssemblyBuilder DefineDynamicAssembly(
	AssemblyName name,
	AssemblyBuilderAccess access,
	string dir,
	Evidence evidence,
	PermissionSet requiredPermissions,
	PermissionSet optionalPermissions,
	PermissionSet refusedPermissions,
	bool isSynchronized,
	IEnumerable<CustomAttributeBuilder> assemblyAttributes
)

Parametri

name
Type: System.Reflection.AssemblyName

Identità univoca dell'assembly dinamico.

access
Type: System.Reflection.Emit.AssemblyBuilderAccess

Modalità mediante cui si accederà all'assembly dinamico.

dir
Type: System.String

Nome della directory nella quale verrà salvato l'assembly dinamico. Se dir è null, viene usata la directory corrente.

evidence
Type: System.Security.Policy.Evidence

Evidenza fornita per l'assembly dinamico. L'evidenza viene usata senza modifiche come il set di evidenza finale impiegato per la risoluzione dei criteri.

requiredPermissions
Type: System.Security.PermissionSet

Richiesta di autorizzazioni obbligatoria.

optionalPermissions
Type: System.Security.PermissionSet

Richiesta di autorizzazioni facoltativa.

refusedPermissions
Type: System.Security.PermissionSet

Richiesta di autorizzazioni rifiutata.

isSynchronized
Type: System.Boolean

true per sincronizzare la creazione di moduli, tipi e membri nell'assembly dinamico; in caso contrario, false.

assemblyAttributes
Type: System.Collections.Generic.IEnumerable<CustomAttributeBuilder>

Elenco enumerabile di attributi da applicare all'assembly oppure null se non sono presenti attributi.

Valore restituito

Type: System.Reflection.Emit.AssemblyBuilder

Assembly dinamico con nome e funzionalità specificati.

Exception Condition
ArgumentNullException

name è null.

ArgumentException

La proprietà Name di name è null.

-oppure-

Il Name proprietà di name inizia con uno spazio vuoto o contiene una barra rovesciata in avanti o indietro.

AppDomainUnloadedException

L'operazione viene tentata in un dominio dell'applicazione non caricato.

Utilizzare questo overload del metodo per specificare gli attributi che non funzionano correttamente a meno che non vengono applicate quando viene creato un assembly dinamico. Ad esempio, attributi di sicurezza, ad esempio SecurityTransparentAttribute e SecurityCriticalAttribute non funzionano correttamente se vengono aggiunti dopo aver creato un assembly dinamico.

Le richieste di autorizzazione specificate per il requiredPermissions, optionalPermissions, e refusedPermissions i parametri vengono utilizzati solo se il evidence parametro specificato, o se l'assembly dinamico viene salvato e ricaricato in memoria.

System_CAPS_noteNota

Quando si sviluppa codice che genera assembly dinamici, si consiglia di includere il SecurityPermissionFlag.SkipVerification flag nel refusedPermissions parametro. L'inclusione di questo flag garantisce che Microsoft intermediate language (MSIL) viene eseguita la verifica. Questa tecnica rileverà la generazione non intenzionale di codice non verificabile, che in caso contrario è molto difficile da rilevare. Una limitazione di questa tecnica è che fa in modo SecurityException venga generata quando viene utilizzato con il codice che richiede l'attendibilità totale.

Solo i chiamanti completamente attendibili possono fornire l'evidenza quando si definisce una dinamica Assembly. Il runtime esegue il mapping di Evidence tramite i criteri di sicurezza per determinare le autorizzazioni concesse. Chiamanti parzialmente attendibili devono fornire null per il evidence parametro. Se evidence è null, il runtime copierà i set di autorizzazioni (ovvero, il correnti concesse e negate) dall'assembly del chiamante all'assembly dinamico che viene definito, contrassegnando i criteri come risolti.

Se l'assembly dinamico viene salvato su disco, successivi caricamenti verranno concesse autorizzazioni in base ai criteri associati al percorso in cui è stato salvato l'assembly dinamico.

Se isSynchronized è true, i metodi seguenti dell'oggetto risultante AssemblyBuilder verranno sincronizzati: DefineDynamicModule, DefineResource, AddResourceFile, GetDynamicModule, SetEntryPoint, e Save. Se due di questi metodi vengono chiamati su thread differenti, uno verrà bloccata finché l'altro viene completato.

Questo overload del metodo è stato introdotto nel .NET Framework 3.5.

SecurityPermission

to load an assembly with evidence. Associated enumeration: F:System.Security.Permissions.SecurityPermissionFlag.ControlEvidence.

.NET Framework
Disponibile da 2.0
Torna all'inizio
Mostra: