Assembly Linker (Al.exe)
Aggiornamento: novembre 2007
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.
Nota
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 (Importazione di un file manifesto Win32 personalizzato) (Opzioni del compilatore C#).
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 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 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 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 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, /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 verrà firmato parzialmente o completamente. 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 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. Al termine del test, sarà possibile apporre una firma completa nell'assembly inserendovi la chiave privata. 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, /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:
È 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 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. 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, /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 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, /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, È possibile creare un file di risorse Win32 utilizzando il 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
Strumento Nome sicuro (Sn.exe)
Strumento Global Assembly Cache (Gacutil.exe)