Condividi tramite


Al.exe (Assembly Linker)

Lo strumento Assembly Linker consente di generare un file con un manifesto dell'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.

NotaNota

Per non essere sottoposto a virtualizzazione in un computer Windows Vista, l'assembly deve includere un manifesto win32 che specifica un livello di esecuzione richiesto.Quando si utilizza al.exe direttamente dalla riga di comando, è possibile incorporare il manifesto in un file di risorse win32 oppure utilizzare mt.exe per aggiungere il manifesto in una fase successiva del processo di compilazione.In Visual Studio 2008, un manifesto win32 viene incorporato automaticamente nell'assembly dai compilatori C# e Visual Basic.Per ulteriori informazioni, vedere /win32manifest (opzioni del compilatore C#).

Questo strumento viene installato automaticamente con Visual Studio e con Windows SDK. Per eseguire lo strumento, si consiglia di utilizzare il prompt dei comandi di Visual Studio o il prompt dei comandi di Windows SDK (shell di CMD). Queste utilità consentono di eseguire facilmente lo strumento, senza dover passare alla cartella di installazione. Per ulteriori informazioni, vedere Prompt dei comandi di Visual Studio e Windows SDK.

  • Se si dispone di Visual Studio installato sul computer: nella barra delle applicazioni, fare clic su Start, fare clic su All Programs, fare clic su Visual Studio, fare clic su Visual Studio Tools e quindi su Visual Studio Command Prompt.

    In alternativa

    Se si dispone di Windows SDK installato sul computer: nella barra delle applicazioni, fare clic su Start, fare clic su All Programs, fare clic sulla cartella di Windows SDK e quindi su Command Prompt (o CMD Shell).

  • Al prompt dei comandi digitare quanto segue:

al sources options

Parametri

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

Origine

Oggetto di 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 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 (opzioni del compilatore C#).

Il parametro name è un identificatore interno relativo alla risorsa. Il parametro targetspecifica 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 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

Oggetto di 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 anziché lasciare al sistema operativo il compito di riposizionare le DLL nello spazio di processo.

/bugreport:filename

Crea un file (filename) contenente informazioni per la segnalazione dei bug.

/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, /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, /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 delle impostazioni cultura da associare all'assembly. I valori validi per le diverse impostazioni cultura 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 delle impostazioni cultura 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 avrà firma completa o parziale. Utilizzare /delaysign- se si desidera che l'assembly abbia firma completa. Utilizzare /delaysign+ se si desidera unicamente inserire la chiave pubblica nell'assembly.

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 archiviata 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. Al termine del test, sarà possibile apporre una firma completa nell'assembly inserendovi la chiave privata.

NotaNota
Prima di utilizzare lo Gacutil.exe (strumento Global Assembly Cache) per inserire un assembly con firma ritardata nella Global Assembly Cache, utilizzare lo Sn.exe (strumento Nome sicuro) per registrare l'assembly per l'omissione della verifica.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, /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 di 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 si specifica /win32res, /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 Flags dell'assembly. I valori possibili per flags sono i seguenti:

0x0000

L'assembly è compatibile in modalità affiancata.

0x0010

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

0x0020

L'assembly non può essere eseguito con 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 l'assembly finale verrà firmato con la chiave privata. Per informazioni sulla generazione di file di chiave 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 entrambe le opzioni /keyfile e /keyname (tramite opzione della riga di comando o attributo personalizzato), verrà effettuato prima un tentativo con il contenitore specificato mediante /keyname. Se l'operazione viene eseguita correttamente, l'assembly viene firmato con le informazioni incluse 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. Tale parametro firmerà l'assembly, ossia assegnerà a quest'ultimo 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 e del file prodotto da Al.exe. Si tratta di un'opzione 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, /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, /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 alle impostazioni cultura.

Gli assembly creati con /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, /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, /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 giorno corrente, 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 giorno corrente, 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, /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 (file res). È possibile creare un file di risorse Win32 utilizzando il compilatore di risorse. Il Compilatore di risorse viene richiamato quando si compila un programma Visual C++. Il file con estensione res viene creato dal file con estensione 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

Attività

Procedura: eseguire test automatizzati dalla riga di comando tramite MSTest

Riferimenti

Errori e avvisi di Al.exe

Sn.exe (strumento Nome sicuro)

Gacutil.exe (strumento Global Assembly Cache)

Prompt dei comandi di Visual Studio e Windows SDK

Altre risorse

Strumenti di .NET Framework

Programmazione con gli assembly

Cronologia delle modifiche

Data

Cronologia

Motivo

Aprile 2011

Sono state aggiunte informazioni sull'utilizzo di Visual Studio e dei prompt dei comandi di Windows SDK.

Miglioramento delle informazioni.