Assembly Linker (Al.exe)

Lo strumento Assembly Linker consente di generare un file con un manifesto assembly a partire da uno o più moduli o file di risorse. Un modulo è un file MSIL (Microsoft Intermediate Language) che non presenta un manifesto assembly.

al sources options

Parametri

È possibile specificare una o più sources tra quelle riportate di seguito.

Origine Descrizione

file[,target]

Copia il contenuto del modulo file nel nome file specificato da target. Al termine dell'operazione di copia, target viene compilato in un assembly.

/embed[resource]:file[,name[,private]]

Incorpora la risorsa specificata da file nell'immagine contenente il manifesto assembly; il contenuto di file viene copiato nell'immagine eseguibile portabile (PE, Portable Executable).

Il parametro name è un identificatore interno relativo alla risorsa. Per impostazione predefinita nell'assembly le risorse sono pubbliche, ovvero visibili ad altri assembly. La specifica del parametro private rende le risorse non visibili ad altri assembly.

Se file è un file di risorse .NET Framework creato ad esempio dallo strumento generatore di file di risorse (Resgen.exe) oppure nell'ambiente di sviluppo, è possibile accedervi tramite i membri dello spazio dei nomi System.Resources. Per ulteriori informazioni, vedere la classe ResourceManager. Per tutte le altre risorse, utilizzare i metodi GetManifestResource* nella classe Assembly per accedere alla risorsa in fase di esecuzione.

Se ad Al.exe vengono passati solo file di risorse, il file di output sarà un assembly satellite di risorse.

/link[resource]:file[,name[,target[,private]]]

Collega un file di risorsa a un assembly. La risorsa specificata da file diventa parte dell'assembly; il file non viene copiato. Il parametro file può essere in qualsiasi formato di file. È possibile, ad esempio, specificare una DLL nativa come parametro file. La DLL nativa diventa quindi parte dell'assembly in modo che possa essere installata nella Global Assembly Cache e che sia possibile accedervi dal codice gestito nell'assembly. Per ottenere lo stesso risultato, è possibile anche utilizzare l'opzione del compilatore /linkresource. Per ulteriori informazioni, vedere /linkresource (collegamento a una risorsa di .NET Framework) (opzioni del compilatore C#).

Il parametro name è un identificatore interno relativo alla risorsa. Il parametro target specifica il percorso e il nome del file da utilizzare per la copia di file. Al termine dell'operazione di copia, target viene compilato in un assembly. Per impostazione predefinita nell'assembly le risorse sono pubbliche, ovvero visibili ad altri assembly. La specifica del parametro private rende le risorse non visibili ad altri assembly.

Se file è un file di risorse .NET Framework creato, ad esempio, dallo strumento Generatore di file di risorse (Resgen.exe) oppure nell'ambiente di sviluppo, è possibile accedervi con membri dello spazio dei nomi System.Resources. Per ulteriori informazioni, vedere la classe ResourceManager. Per tutte le altre risorse, utilizzare i metodi GetManifestResource* nella classe Assembly per accedere alla risorsa in fase di esecuzione.

Se ad Al.exe vengono passati solo file di risorse, il file di output sarà un assembly satellite di risorse.

È possibile specificare le options riportate di seguito. Si noti che l'opzione /out è obbligatoria.

Opzione Descrizione

/algid:id

Specifica un algoritmo per generare un hash per tutti i file di un assembly su più file ad eccezione del file contenente il manifesto assembly. L'algoritmo predefinito è CALG_SHA1. Per ulteriori algoritmi, vedere ALG_ID nella documentazione relativa a Platform SDK. Per la prima versione di .NET Framework sono validi solo gli algoritmi CALG_SHA1 e CALG_MD5.

I valori hash vengono archiviati nella tabella di file del manifesto assembly. In fase di installazione e caricamento i file dell'assembly vengono verificati rispetto ai valori hash.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyAlgorithmIdAttribute) nel codice sorgente di ciascun modulo.

/base[address]:addr

Specifica l'indirizzo da utilizzare in fase di esecuzione per il caricamento di una DLL sul computer dell'utente. Il caricamento delle applicazioni risulta più veloce se si specifica l'indirizzo di base delle DLL, poiché non viene affidato al sistema operativo il compito di rilocare le DLL nello spazio di processo.

/bugreport:filename

Crea un file (filename) contenente informazioni per la segnalazione degli errori.

/comp[any]:text

Specifica una stringa per il campo Società dell'assembly. Se text contiene uno spazio, racchiudere la stringa tra virgolette doppie (" "). Questa stringa è un attributo personalizzato dell'assembly ed è disponibile mediante reflection.

Se non si specifica /win32res, in Esplora risorse verrà visualizzato text come proprietà Company del file. Se si specifica /win32res, in Esplora risorse come proprietà Company verranno visualizzate le informazioni sulla società abbinate al file di risorse specificato.

Se testo è una stringa vuota (""), come risorsa Win32 Company verrà visualizzato uno spazio.

Se si specifica /win32res, l'opzione /company non avrà alcun effetto sulle informazioni della risorsa Win32.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyCompanyAttribute) nel codice sorgente di ciascun modulo MSIL.

/config[uration]:text

Specifica una stringa per il campo Configurazione dell'assembly. Se text contiene uno spazio, racchiudere la stringa tra virgolette doppie (" "). Questa stringa è un attributo personalizzato dell'assembly ed è disponibile mediante reflection.

Se testo è una stringa vuota, come risorsa Win32 Configurazione verrà visualizzato uno spazio.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyConfigurationAttribute) nel codice sorgente di ciascun modulo MSIL.

/copy[right]:text

Specifica una stringa per il campo Copyright dell'assembly. Se text contiene uno spazio, racchiudere la stringa tra virgolette doppie (" "). Questa stringa è un attributo personalizzato dell'assembly ed è disponibile mediante reflection.

Se non si specifica /win32res, in Esplora risorse come risorsa Win32 Copyright verrà visualizzato /copyright.

Se testo è una stringa vuota, come risorsa Win32 Copyright verrà visualizzato uno spazio.

Se si specifica /win32res, l'opzione /copyright non avrà alcun effetto sulle informazioni della risorsa Win32.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyCopyrightAttribute) nel codice sorgente di ciascun modulo MSIL.

/c[ulture]:text

Specifica la stringa della lingua da associare all'assembly. I valori validi per le diverse lingue sono definiti nel documento RFC (Internet Requests for Comments) 1766 intitolato "Tags for the Identification of Languages" (informazioni in lingua inglese).

Se text contiene uno spazio, racchiudere la stringa tra virgolette doppie (" "). Non vi è nessuna stringa predefinita. La stringa è disponibile mediante reflection.

Per informazioni sulle stringhe text valide, vedere CultureInfo.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyCultureAttribute) nel codice sorgente di ciascun modulo MSIL.

/delay[sign][+|-]

Specifica se l'assembly verrà firmato parzialmente o completamente. Utilizzare /delaysign- se si desidera che l'assembly abbia firma completa. Utilizzare /delaysign+ se si desidera inserire nell'assembly solo la chiave pubblica.

Quando si richiede un assembly con firma completa, viene generato un hash per il file contenente il manifesto (i metadati dell'assembly) e a tale valore hash viene apposta la chiave privata. La firma digitale risultante viene memorizzata nel file contenente il manifesto. Quando per un assembly è impostata la firma ritardata, non viene eseguito il calcolo e l'archiviazione della firma, ma viene riservato spazio nel file per l'aggiunta della firma in un secondo momento.

Il valore predefinito è /delaysign-.

L'opzione /delaysign non ha alcun effetto se non è abbinata all'opzione /keyfile o /keyname.

Ad esempio, l'utilizzo di /delaysign+ consente a un tester di inserire l'assembly nella Global Assembly Cache. A termine del test sarà possibile aggiungere all'assembly la chiave privata per completare la firma.

Nota

Prima di utilizzare lo Strumento Global Assembly Cache (Gacutil.exe) per inserire un assembly con firma ritardata nella Global Assembly Cache, utilizzare lo Strumento Nome sicuro (Sn.exe) per registrare l'assembly per l'omissione della verifica. Digitare ad esempio Sn.exe –Vr delaySignedAssembly. Utilizzare questo strumento solo per lo sviluppo.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyDelaySignAttribute) nel codice sorgente di ciascun modulo MSIL.

/descr[iption]:text

Specifica una stringa per il campo Description dell'assembly. Se text contiene uno spazio, racchiudere la stringa tra virgolette doppie (" "). Questa stringa è un attributo personalizzato dell'assembly ed è disponibile mediante reflection.

Se non si specifica /win32res, in Esplora risorse come risorsa Win32 Commenti verrà visualizzato /description.

Se testo è una stringa vuota, come risorsa Win32 Commenti verrà visualizzato uno spazio.

Se si specifica /win32res, l'opzione /description non avrà alcun effetto sulle informazioni della risorsa Win32.

È possibile inoltre specificare questa opzione come un attributo personalizzato (Description) nel codice sorgente di ciascun modulo MSIL.

/e[vidence]: file

Incorpora file nell'assembly con il nome di risorsa Security.Evidence.

Non è possibile utilizzare il nome Security.Evidence per risorse regolari.

/fileversion: version

Specifica una stringa per il campo Versione file dell'assembly. Questa stringa è un attributo personalizzato dell'assembly ed è disponibile mediante reflection.

Se non si specifica /win32res, in Esplora risorse come risorsa Win32 Versione file verrà utilizzato /fileversion. Se non si specifica /fileversion, la risorsa Win32 Versione file verrà popolata dalla risorsa Win 32 Versione assembly.

Se viene specificato /win32res, l'opzione /fileversion non avrà alcun effetto sulla risorsa Win32.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyFileVersionAttribute) nel codice sorgente di ciascun modulo MSIL.

/flags: flags

Specifica un valore per il campo Flag dell'assembly. I valori possibili per flags sono i seguenti:

0x0000

L'assembly è compatibile in modalità affiancata.

0x0010

L'assembly non può essere eseguito contemporaneamente ad altre versioni se esse sono in esecuzione nello stesso dominio di applicazione.

0x0020

L'assembly non può essere eseguito contemporaneamente ad altre versioni se esse sono in esecuzione nello stesso processo.

0x0030

L'assembly non può essere eseguito contemporaneamente ad altre versioni se esse sono in esecuzione sullo stesso computer.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyFlagsAttribute) nel codice sorgente di ciascun modulo MSIL.

/fullpaths

Impone l'utilizzo del percorso assoluto per tutti i file menzionati in un messaggio di errore.

/help

Visualizza la sintassi e le opzioni dei comandi dello strumento.

/keyf[ile]: filename

Specifica un file (filename) contenente una coppia di chiavi o solo una chiave pubblica da utilizzare per la firma di un assembly. Durante la compilazione la chiave pubblica verrà inserita nel manifesto dell'assembly mentre la chiave privata verrà apposta all'assembly alla fine del processo. Per informazioni sulla generazione di file e l'installazione di coppie di chiavi in contenitori di chiavi, vedere Strumento Nome sicuro (Sn.exe).

Quando si utilizza la firma ritardata il file presenta generalmente la chiave pubblica ma non quella privata.

Le informazioni sulla chiave pubblica, facente parte della coppia di chiavi, vengono visualizzate nel campo .publickey dell'assembly.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyKeyFileAttribute) nel codice sorgente di ciascun modulo MSIL.

Se nella stessa compilazione sono specificate /keyfile e /keyname, mediante opzione della riga di comando o attributo personalizzato, verrà tentato prima il contenitore specificato con /keyname. Se l'operazione riesce, l'assembly viene firmato con le informazioni presenti nel contenitore di chiavi. Se il contenitore di chiavi non viene trovato, verrà effettuato un tentativo con il file specificato in /keyfile. Se l'operazione riesce, l'assembly verrà firmato con le informazioni contenute nel file di chiavi e le informazioni sulla chiave verranno installate nel contenitore di chiavi (con un procedimento analogo all'opzione -i in Sn.exe) per far sì che nella compilazione successiva sia valida l'opzione /keyname.

/keyn[ame]: text

Specifica un contenitore che contiene una coppia di chiavi. Questa opzione apporrà la firma all'assembly, ovvero darà ad esso un nome sicuro, inserendo una chiave pubblica nel manifesto dell'assembly. All'assembly finale verrà poi aggiunta la chiave privata.

Utilizzare lo strumento Sn.exe per generare una coppia di chiavi.

Le informazioni relative alla chiave sono visualizzate nel campo .publickey dell'assembly.

Racchiudere text tra virgolette doppie (" ") se include uno spazio.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyKeyNameAttribute) nel codice sorgente di ciascun modulo MSIL.

/main: method

Specifica il nome completo (class.method) del metodo da utilizzare come punto di ingresso durante la conversione di un modulo in un file eseguibile.

/nologo

Evita la visualizzazione del messaggio o del logo nella riga di comando quando viene richiamato lo strumento Al.exe.

/out: filename

Specifica il nome del file generato da Al.exe. Si tratta di un'operazione obbligatoria.

/platform:text

Limita le piattaforme su cui è possibile eseguire il codice: x86, Itanium, x64 o anycpu (la piattaforma predefinita).

/prod[uct]: text

Specifica una stringa per il campo Prodotto dell'assembly. Se text contiene uno spazio, racchiudere la stringa tra virgolette doppie (" "). Questa stringa è un attributo personalizzato dell'assembly ed è disponibile mediante reflection.

Se non si specifica /win32res, in Esplora risorse come risorsa Win32 Nome prodotto verrà visualizzato /product.

Se testo è una stringa vuota (""), come risorsa Win32 Nome prodotto verrà visualizzato uno spazio.

Se si specifica /win32res, l'opzione /product non avrà alcun effetto sulle informazioni della risorsa Win32.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyProductAttribute) nel codice sorgente di ciascun modulo MSIL.

/productv[ersion]: text

Specifica una stringa per il campo Versione prodotto dell'assembly. Se text contiene uno spazio, racchiudere la stringa tra virgolette doppie (" "). Questa stringa è un attributo personalizzato dell'assembly ed è disponibile mediante reflection.

Se non si specifica /win32res, come risorsa Win32 Versione prodotto verrà utilizzata /productversion. Se non si specifica /productversion, la risorsa Win32 Versione prodotto verrà popolata dalla risorsa Win32 File Version.

Se si specifica /win32res, l'opzione /productversion non avrà alcun effetto sulle informazioni della risorsa Win32.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyInformationalVersionAttribute) nel codice sorgente di ciascun modulo MSIL.

/t[arget]:lib[rary] | exe | win[exe]

Specifica il formato file del file di output. Sono consentiti tre formati: lib[rary] per le librerie di codici, exe per le applicazioni console oppure win[exe] per le applicazioni per Windows. Il valore predefinito è lib[rary].

/template: filename

Specifica l'assembly, filename, dal quale ereditare tutti i metadati dell'assembly, ad eccezione del campo relativo alla lingua.

Gli assembly creati con l'opzione /template sono assembly satellite.

/title: text

Specifica una stringa per il campo Titolo dell'assembly. Se text contiene uno spazio, racchiudere la stringa tra virgolette doppie (" "). Questa stringa è un attributo personalizzato dell'assembly ed è disponibile mediante reflection.

Se non si specifica /win32res, l'opzione /title verrà visualizzata in Esplora risorse come risorsa Win32 Descrizione e utilizzata dalla shell come nome descrittivo di un'applicazione. Questa opzione viene visualizzata anche nel sottomenu Apri con del menu di scelta rapida dei tipi di file supportati da più applicazioni.

Se testo è una stringa vuota (""), come risorsa Win32 Descrizione verrà visualizzato uno spazio.

Se si specifica /win32res, l'opzione /title non avrà alcun effetto sulle informazioni della risorsa Win32.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyTitleAttribute) nel codice sorgente di ciascun modulo MSIL.

/trade[mark]: text

Specifica una stringa per il campo Marchio dell'assembly. Se text contiene uno spazio, racchiudere la stringa tra virgolette doppie (" "). Questa stringa è un attributo personalizzato dell'assembly ed è disponibile mediante reflection.

Se non si specifica /win32res, in Esplora risorse come risorsa Win32 Marchio verrà visualizzato /trademark.

Se testo è una stringa vuota, come risorsa Win32 Marchio verrà visualizzato uno spazio.

Se si specifica /win32res, l'opzione /trademark non avrà alcun effetto sulle informazioni della risorsa Win32.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyTrademarkAttribute) nel codice sorgente di ciascun modulo MSIL.

/v[ersion]: version

Specifica le informazioni relative alla versione dell'assembly. Il formato della stringa di versione è major.minor.build.revision. Il valore predefinito è 0.

Se si specifica l'argomento /version, sarà necessario specificare anche l'argomento major. Se si specificano major e minor, è possibile specificare un asterisco (*) per build. In questo caso il valore build coinciderà con il numero dei giorni trascorsi dal 1 gennaio 2000, ora locale, e il valore revision sarà uguale alla metà del numero dei secondi trascorsi dalla mezzanotte del 1 gennaio 2000, ora locale.

Se si specificano major, minor e build, è possibile specificare un asterisco (*) per revision. In questo caso, il valore revision sarà pari alla metà del numero dei secondi trascorsi dalla mezzanotte del 1 gennaio 2000, ora locale.

Le stringhe di versione valide sono pertanto le seguenti:

X

X.X

X.X.*

X.X.X

X.X.X.*

X.X.X.X

dove X è una costante di tipo short senza segno diversa da 65535 (0-65534).

Se non si specifica /win32res, in Esplora risorse come risorsa Win32 Versione assembly verrà utilizzato /version.

Se non si specificano /win32res, /productversion e /fileversion, verrà utilizzata l'opzione /version per le risorse Win 32 Versione assembly, Versione file e Versione prodotto.

Se si specifica /win32res, l'opzione /version non avrà alcun effetto sulle informazioni della risorsa Win32.

È possibile inoltre specificare questa opzione come un attributo personalizzato (AssemblyVersionAttribute) nel codice sorgente di ciascun modulo MSIL.

/win32icon: filename

Inserisce nell'assembly un file ICO che determina l'aspetto del file di output in Esplora risorse.

/win32res: filename

Inserisce nel file di output una risorsa Win32, ovvero un file RES, che può essere creato con lo strumento Compilatore di risorse Il compilatore di risorse viene richiamato quando si compila un programma in Visual C++. Il file RES viene creato dal file RC.

@filename

Specifica un file di risposta contenente comandi di Al.exe.

Nel file di risposta i comandi possono essere disposti uno per riga oppure tutti sulla stessa riga, separati da uno o più spazi.

/?

Visualizza la sintassi e le opzioni dei comandi dello strumento.

Note

Tutti i compilatori di Visual Studio producono assembly. Tuttavia, se sono presenti uno o più moduli, ovvero metadati senza un manifesto, è possibile utilizzare Al.exe per creare un assembly con il manifesto in un file separato.

Per installare o rimuovere assembly dalla cache oppure visualizzare un elenco del contenuto della cache, utilizzare lo strumento Strumento Global Assembly Cache (Gacutil.exe).

Esempio

Il comando riportato di seguito consente di creare un file eseguibile t2a.exe con un assembly a partire dal modulo t2.netmodule. Il punto di ingresso è il metodo Main in MyClass.

al t2.netmodule /target:exe /out:t2a.exe /main:MyClass.Main

Vedere anche

Riferimenti

Strumenti di .NET Framework
Errori e avvisi di Al.exe
Strumento Nome sicuro (Sn.exe)
Strumento Global Assembly Cache (Gacutil.exe)
Prompt dei comandi di SDK

Altre risorse

Programmazione con gli assembly