Al.exe (Assembly Linker)

Assembly Linker génère un fichier doté d'un manifeste d'assembly provenant d'un ou de plusieurs fichiers qui sont soit des modules, soit des fichiers de ressources. Un module est un fichier IL (Intermediate Language) sans manifeste d'assembly.

Notes

Dans Visual Studio 2008, les deux compilateurs C# et Visual Basic incorporent automatiquement un manifeste Win32 dans l'assembly. Pour plus d’informations, consultez -win32manifest (Options du compilateur C#).

Cet outil est installé automatiquement avec Visual Studio. Pour exécuter l’outil, utilisez l’invite de commandes développeur Visual Studio ou PowerShell pour développeurs Visual Studio.

À l'invite de commandes, tapez :

Syntaxe

al sources options

Paramètres

Vous pouvez spécifier une ou plusieurs des sources suivantes.

Source Description
file[,target] Copie le contenu de file (un module) dans le nom de fichier spécifié par target. Après la copie, Al.exe compile target dans un assembly.
/embed[resource]:file[,name[,private]] Incorpore la ressource spécifiée par file dans l’image qui contient le manifeste d’assembly ; Al.exe copie le contenu de file dans l’image exécutable portable (PE).

Le paramètre name est un identificateur interne de la ressource. Par défaut, les ressources sont publiques dans l'assembly (elles sont donc visibles aux autres assemblys). Si vous spécifiez private, la ressource n'est pas visible aux autres assemblys.

Si file est un fichier de ressources du .NET Framework créé par exemple par l’outil Resource File Generator (Resgen.exe) ou dans l’environnement de développement, il est possible d’y accéder avec des membres de System.Resources. Pour plus d’informations, consultez ResourceManager. Pour toutes les autres ressources, utilisez les méthodes GetManifestResource* de l’Assembly pour accéder à la ressource au moment de l’exécution.

Si seuls les fichiers de ressources sont passés à Al.exe, le fichier de sortie est un assembly de ressources satellite.
/link[resource]:file[,name[,target[,private]]] Lie un fichier de ressources à un assembly. La ressource spécifiée par file est intégrée à l'assembly ; le fichier n'est pas copié. Le paramètre file peut être dans n'importe quel format de fichier. Par exemple, vous pouvez spécifier une DLL native en tant que paramètre file. La DLL native de l'assembly pourra ainsi être installée dans le Global Assembly Cache et atteinte à partir du code managé dans l'assembly. Vous pouvez faire la même chose en utilisant l’option du compilateur /linkresource. Pour plus d’informations, consultez -linkresource (options du compilateur C#).

Le paramètre name est un identificateur interne de la ressource. Le paramètre target spécifie un chemin d’accès et un nom de fichier dans lequel Al.exe copie le file. Après la copie, Al.exe compile le paramètre target dans un assembly. Par défaut, les ressources sont publiques dans l'assembly (elles sont donc visibles aux autres assemblys). Si vous spécifiez private, la ressource n'est pas visible aux autres assemblys.

Si file est un fichier de ressources du .NET Framework créé, par exemple, par l'outil Resource File Generator (Resgen.exe) ou dans l'environnement de développement, il est possible d'y accéder à l'aide des membres de l'espace de noms System.Resources. Pour plus d’informations, consultez ResourceManager. Pour toutes les autres ressources, utilisez les méthodes GetManifestResource* dans la classe Assembly pour accéder à la ressource au moment de l’exécution.

Si seuls les fichiers de ressources sont passés à Al.exe, le fichier de sortie est un assembly de ressources satellite.

Vous pouvez spécifier les options ci-dessous. L’option /out est obligatoire.

Option Description
/algid:id Spécifie un algorithme de hachage de tous les fichiers dans un assembly multifichier, à l'exception du fichier qui contient le manifeste d'assembly. L'algorithme par défaut est CALG_SHA1. Pour connaître les autres algorithmes, consultez ALG_ID dans la documentation relative au Kit de développement logiciel (SDK) de la plate-forme. Dans la première version du .NET Framework, seuls CALG_SHA1 et CALG_MD5 sont valides.

Les valeurs de hachage sont stockées dans la table de fichiers du manifeste d'assembly. Lors de l'installation et du chargement, les fichiers de l'assembly sont comparés par rapport à leurs hachages.

Vous pouvez également spécifier cette option comme attribut personnalisé (AssemblyAlgorithmIdAttribute) dans le code source de n'importe quel module.
/base[address]:addr Spécifie l'adresse de chargement d'une DLL sur l'ordinateur de l'utilisateur au moment de l'exécution. Le chargement des applications est plus rapide si vous spécifiez l'adresse de base des DLL au lieu de laisser le système d'exploitation déplacer les DLL dans l'espace de processus.
/bugreport: filename Crée un fichier (filename) qui contient des informations sur le signalement des bogues.
/comp[any]:text Spécifie une chaîne pour le champ Société de l'assembly. Placez la chaîne entre guillemets doubles (" ") si text contient un espace. Cette chaîne est un attribut personnalisé dans l'assembly et elle est disponible pour l'affichage avec réflexion.

Si vous ne spécifiez pas /win32res, text s’affiche dans l’Explorateur de fichiers comme la propriété Company du fichier. Si vous spécifiez /win32res, les informations sur la société dans le fichier de ressources spécifié s’affichent comme la propriété Company dans l’Explorateur de fichiers.

Si le texte est une chaîne vide (""), la ressource Company Win32 apparaît comme un espace unique.

Si vous spécifiez /win32res, /company n’a pas d’effet sur les informations de la ressource Win32.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyCompanyAttribute) dans le code source pour n’importe quel module CIL.
/config[uration]:text Spécifie une chaîne pour le champ Configuration de l'assembly. Placez la chaîne entre guillemets doubles (" ") si text contient un espace. Cette chaîne est un attribut personnalisé dans l'assembly et elle est disponible pour l'affichage avec réflexion.

Si le texte est une chaîne vide, la ressource Configuration Win32 apparaît comme un espace unique.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyConfigurationAttribute) dans le code source pour n’importe quel module CIL.
/copy[right]:text Spécifie une chaîne pour le champ Copyright de l'assembly. Placez la chaîne entre guillemets doubles (" ") si text contient un espace. Cette chaîne est un attribut personnalisé dans l'assembly et elle est disponible pour l'affichage avec réflexion.

Si vous ne spécifiez pas /win32res, /copyright s’affiche dans l’Explorateur de fichiers comme la ressource Win32 Copyright.

Si le texte est une chaîne vide, la ressource Copyright Win32 apparaît comme un espace unique.

Si vous spécifiez /win32res, /copyright n’a pas d’effet sur les informations de la ressource Win32.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyCopyrightAttribute) dans le code source pour n’importe quel module CIL.
/c[ulture]:text Spécifie la chaîne de culture à associer à l'assembly. Les valeurs valides pour les cultures sont définies dans le document RFC (Internet Requests for Comments) 1766 intitulé "Tags for the Identification of Languages".

Placez la chaîne entre guillemets doubles (" ") si text contient un espace. Il n'y a pas de chaîne de culture par défaut. Cette chaîne est disponible pour l'affichage avec réflexion.

Pour plus d'informations sur les chaînes text valides, consultez CultureInfo.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyCultureAttribute) dans le code source pour n’importe quel module CIL.
/delay[sign][+ or -] Spécifie si l'assembly sera complètement ou partiellement signé. Utilisez /delaysign- si vous souhaitez obtenir un assembly complètement signé. Utilisez /delaysign+ si vous souhaitez uniquement inclure la clé publique dans l’assembly.

Lorsque vous demandez un assembly totalement signé, Al.exe hache le fichier qui contient le manifeste (métadonnées de l’assembly) et signe ce hachage avec la clé privée. La signature numérique obtenue est stockée dans le fichier qui contient le manifeste. Pour un assembly avec signature différée, Al.exe ne calcule pas, ni ne stocke la signature, mais réserve de l'espace dans le fichier pour que la signature puisse être ajoutée par la suite.

/delaysign- est l’option par défaut.

L’option /delaysign est sans effet sauf si elle est utilisée avec l’option /keyfile ou /keyname.

Par exemple, l’utilisation de /delaysign+ permet à un testeur d’insérer l’assembly dans le cache global. Après le test, vous pouvez signer complètement l'assembly en y incluant la clé privée.

Remarque : Avant d’utiliser l’outil Gacutil.exe (Global Assembly Cache Tool) pour mettre un assembly à signature différée dans le cache global, utilisez Sn.exe (Strong Name Tool) pour enregistrer l’assembly afin d’ignorer la vérification. Par exemple : Sn.exe –Vr delaySignedAssembly. Utilisez cela uniquement pour le développement.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyDelaySignAttribute) dans le code source pour n’importe quel module CIL.
/descr[iption]:text Spécifie une chaîne pour le champ Description de l'assembly. Placez la chaîne entre guillemets doubles (" ") si text contient un espace. Cette chaîne est un attribut personnalisé dans l'assembly et elle est disponible pour l'affichage avec réflexion.

Si vous ne spécifiez pas /win32res, /description s’affiche dans l’Explorateur de fichiers comme la ressource Win32 Commentaires.

Si le texte est une chaîne vide, la ressource Commentaires Win32 apparaît comme un espace unique.

Si vous spécifiez /win32res, /description n’a pas d’effet sur les informations de la ressource Win32.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (Description) dans le code source pour n’importe quel module CIL.
/e[vidence]:file Incorpore file dans l'assembly avec le nom de ressource Security.Evidence.

Vous ne pouvez pas utiliser Security.Evidence pour les ressources standard.
/fileversion:version Spécifie une chaîne pour le champ Version de fichier de l'assembly. Cette chaîne est un attribut personnalisé dans l'assembly et elle est disponible pour l'affichage avec réflexion.

Si vous ne spécifiez pas /win32res, /fileversion est utilisé comme la ressource Win32 Version de fichier. Si vous ne spécifiez pas /fileversion, la ressource Win32 Version de fichier est remplie par la ressource Win32 Version de l’assembly.

Si /win32res est spécifié, /fileversion n’a pas d’effet sur la ressource Win32.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyFileVersionAttribute) dans le code source de n’importe quel module CIL.
/flags:flags Spécifie une valeur pour le champ Flags de l'assembly. Valeurs possibles pour flags :

0x0000
L'assembly est compatible côte-à-côte.

0x0010
L'assembly ne peut pas s'exécuter avec d'autres versions si celles-ci s'exécutent dans le même domaine d'application.

0x0020
L'assembly ne peut pas s'exécuter avec d'autres versions si elles s'exécutent dans le même processus.

0x0030
L'assembly ne peut pas s'exécuter avec d'autres versions si celles-ci s'exécutent sur le même ordinateur.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyFlagsAttribute) dans le code source pour n’importe quel module CIL.
/fullpaths Force Al.exe à utiliser le chemin absolu de tout fichier signalé dans un message d’erreur.
/help Affiche la syntaxe et les options de commande de l'outil.
/keyf[ile]:filename Spécifie un fichier (filename) qui contient une paire de clés ou juste une clé publique pour signer un assembly. Le compilateur insère la clé publique dans le manifeste d'assembly, puis signe l'assembly final avec la clé privée. Consultez Strong Name Tool (Sn.exe) pour plus d’informations sur la génération des fichiers de clés et l’installation des paires de clés dans les conteneurs de clés.

Si vous utilisez la signature différée, ce fichier aura en général la clé publique, mais pas la clé privée.

Les informations de la clé publique (ou de la paire de clés) s'affichent dans le champ .publickey de l'assembly.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyKeyFileAttribute) dans le code source pour n’importe quel module CIL.

Si /keyfile et /keyname sont spécifiés (par option de ligne de commande ou par attribut personnalisé) dans la même compilation, Al.exe essaie d’abord d’utiliser le conteneur spécifié avec /keyname. Si cette tentative réussit, l'assembly est signé avec les informations figurant dans le conteneur de clé. Si Al.exe ne trouve pas le conteneur de clés, il essaie d’utiliser le fichier spécifié avec /keyfile. En cas de réussite, l’assembly est signé avec les informations du fichier de clé et les informations sur la clé sont installées dans le conteneur de clés (comme avec l’option -i de Sn.exe). L’option /keyname peut ainsi être utilisée à la compilation suivante.
/keyn[ame]:text Spécifie un conteneur qui contient une paire de clés. Cela signe l'assembly (lui donne un nom fort) en insérant une clé publique dans le manifeste d'assembly. Al.exe signe ensuite l'assembly définitif à l'aide de la clé privée.

Utilisez Sn.exe pour générer une paire de clés.

Les informations sur les clés apparaissent dans le champ .publickey de l'assembly.

Met la chaîne entre guillemets doubles (" ") si text contient un espace incorporé.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyKeyNameAttribute) dans le code source pour n’importe quel module CIL.
/main:method Spécifie le nom complet (class.method) de la méthode à utiliser comme point d'entrée lors de la conversion d'un module en fichier exécutable.
/nologo Supprime la bannière, ou le logo, affiché sur la ligne de commande lorsque vous appelez Al.exe.
/out:filename Spécifie le nom du fichier produit par Al.exe. C'est une option obligatoire.
/platform:text Limite sur quelles plateformes ce code peut s'exécuter. Il doit s'agir des plateformes suivantes : x86, Itanium, x64, anycpu (par défaut) ou anycpu32bitpreferred.
/prod[uct]:text Spécifie une chaîne pour le champ Produit de l'assembly. Placez la chaîne entre guillemets doubles (" ") si text contient un espace. Cette chaîne est un attribut personnalisé dans l'assembly et elle est disponible pour l'affichage avec réflexion.

Si vous ne spécifiez pas /win32res, /product s’affiche dans l’Explorateur de fichiers comme la ressource Win32 Nom du produit.

Si le texte est une chaîne vide, la ressource Win32 Nom du produit apparaît comme un espace unique.

Si vous spécifiez /win32res, /product n’a pas d’effet sur les informations de la ressource Win32.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyProductAttribute) dans le code source pour n’importe quel module CIL.
/productv[ersion]:text Spécifie une chaîne pour le champ Version du produit de l'assembly. Placez la chaîne entre guillemets doubles (" ") si text contient un espace. Cette chaîne est un attribut personnalisé dans l'assembly et elle est disponible pour l'affichage avec réflexion.

Si vous ne spécifiez pas /win32res, /productversion est utilisé comme la ressource Win32 Version du produit. Si vous ne spécifiez pas /productversion, la ressource Win32 Version du produit est remplie par la ressource Win32 Version de fichier.

Si vous spécifiez /win32res, /productversion n’a pas d’effet sur les informations de la ressource Win32.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyInformationalVersionAttribute) dans le code source pour n’importe quel module CIL.
/t[arget] :lib[rary] | exe | win[exe] Spécifie le format du fichier de sortie : lib[rary] (bibliothèque de codes), exe (application console) ou win[exe] (application Windows). Par défaut, il s’agit de lib[rary].
/template:filename Spécifie l'assembly, filename, à partir duquel hériter de toutes les métadonnées d'assembly, à l'exception du champ Culture.

Un assembly créé avec /template est un assembly satellite.
/title:text Spécifie une chaîne pour le champ Titre de l'assembly. Placez la chaîne entre guillemets doubles (" ") si text contient un espace. Cette chaîne est un attribut personnalisé dans l'assembly et elle est disponible pour l'affichage avec réflexion.

Si vous ne spécifiez pas /win32res, /title s’affiche dans l’Explorateur de fichiers comme la ressource Win32 Description, qui est utilisée par l’interpréteur de commandes comme nom convivial d’une application. Il s'affiche également dans le sous-menu Ouvrir avec du menu contextuel pour un type de fichier pour lequel il existe plusieurs applications de support.

Si le texte est une chaîne vide, la ressource Win32 Description apparaît comme un espace unique.

Si vous spécifiez /win32res, /title n’a pas d’effet sur les informations de la ressource Win32.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyTitleAttribute) dans le code source pour n’importe quel module CIL.
/trade[mark]:text Spécifie une chaîne pour le champ Marque de l'assembly. Placez la chaîne entre guillemets doubles (" ") si text contient un espace. Cette chaîne est un attribut personnalisé dans l'assembly et elle est disponible pour l'affichage avec réflexion.

Si vous ne spécifiez pas /win32res, /trademark s’affiche dans l’Explorateur de fichiers comme la ressource Win32 Marque.

Si le texte est une chaîne vide, la ressource Marque Win32 apparaît comme un espace unique.

Si vous spécifiez /win32res, /trademark n’a pas d’effet sur les informations de la ressource Win32.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyTrademarkAttribute) dans le code source pour n’importe quel module CIL.
/v[ersion]:version Spécifie les informations de version concernant cet assembly. Le format de la chaîne de version est major.minor.build.revision. La valeur par défaut est 0.

Si vous spécifiez /version, vous devez également spécifier major. Si vous spécifiez major et minor, vous pouvez indiquer un astérisque (*) pour build. build est alors égal au nombre de jours écoulés depuis le 1er janvier 2000, heure locale, tandis que revision est égal au nombre de secondes écoulées depuis minuit, heure locale, divisé par 2.

Si vous spécifiez major, minor et build, vous pouvez spécifier un astérisque pour revision. revision est égal au nombre de secondes écoulées depuis minuit (heure locale), divisé par 2.

En résumé, les chaînes de version valides sont les suivantes :

X

X.X

X.X.*

X.X.X

X.X.X.*

X.X.X.X

où X est une constante abrégée non signée, à l'exception de 65 535 (0-65 534).

Si vous ne spécifiez pas /win32res, /version est utilisé comme la ressource Win32 Version de l’assembly.

Si vous ne spécifiez pas /win32res, /productversion et /fileversion, /version est utilisé pour les ressources Win32 Version de l’assembly, Version de fichier et Version du produit.

Si vous spécifiez /win32res, /version n’a pas d’effet sur les informations de la ressource Win32.

Vous pouvez également spécifier cette option en tant qu’attribut personnalisé (AssemblyVersionAttribute) dans le code source pour n’importe quel module CIL.
/win32icon:filename Insère un fichier .ico dans l'assembly. Le fichier .ico donne au fichier de sortie l'aspect souhaité dans l'Explorateur de fichiers.
/win32res:filename Insère une ressource Win32 (fichier .res) dans le fichier de sortie. Un fichier de ressources Win32 peut être créé à l'aide du compilateur de ressources. Le compilateur de ressources est appelé lorsque vous compilez un programme Visual C++ ; un fichier .res est alors créé à partir du fichier .rc.
@filename Spécifie un fichier réponse qui contient les commandes Al.exe.

Les commandes du fichier réponse peuvent apparaître chacune sur une ligne ou sur la même ligne, séparées par un ou plusieurs espaces.
/? Affiche la syntaxe et les options de commande de l'outil.

Notes

Tous les compilateurs Visual Studio génèrent des assemblys. Si, toutefois, vous disposez d'un ou de plusieurs modules (métadonnées sans manifeste), vous pouvez utiliser Al.exe pour créer un assembly avec le manifeste dans un fichier séparé.

Pour installer des assemblys dans le cache, supprimer des assemblys du cache ou répertorier le contenu du cache, utilisez l’outil Global Assembly Cache Tool (Gacutil.exe).

Erreurs et avertissements

Le tableau suivant liste les erreurs générées par Al.exe.

Erreur Description
al1001 Erreur interne du compilateur

Essayez de déterminer si Al.exe échoue en raison de l’impossibilité d’analyser une syntaxe inattendue. Ensuite, contactez les services de support technique Microsoft.
al1002 Mémoire insuffisante

Al.exe a manqué de mémoire et s'est arrêté. Augmentez la quantité de mémoire disponible.
al1003 L'option du compilateur 'option' doit être suivie d'un argument.

Al.exe attendait un argument à passer à une option de ligne de commande. Par exemple, si vous spécifiez /algid:, vous devez passer un identificateur d’algorithme.
al1004 Erreur d'initialisation du Common Language Runtime inattendue — 'raison'

Al.exe a signalé une erreur dans l'installation de Visual Studio ou le Common Language Runtime pour la raison spécifiée.
al1005 Fichier 'fichier' trop grand pour être ouvert

La taille des fichiers ouverts par Al.exe doit être inférieure à 4 gigaoctets (Go).
al1006 Le fichier réponse 'fichier' était déjà inclus

Le même fichier réponse a été spécifié (@file) plusieurs fois sur la ligne de commande. Le fichier réponse peut être inclus une seule fois.
al1007 Erreur lors de l'ouverture du fichier réponse 'fichier' — 'raison'

Al.exe ne peut pas ouvrir le fichier réponse spécifié pour la raison spécifiée.
al1008 Spécification de fichier manquante pour l'option de ligne de commande 'option'

Al.exe attendait un fichier à passer à une option de ligne de commande. Par exemple, si vous spécifiez l’option /out, vous devez spécifier un fichier.
al1009 Impossible d'ouvrir 'fichier' en écriture

Al.exe n’a pas pu écrire dans un fichier, comme le fichier d’assembly de sortie. Le disque est peut-être plein, le fichier peut être en lecture seule ou vous ne disposiez pas des autorisations d'accès au fichier.
al1010 Erreur de syntaxe de ligne de commande : ':texte' manquant pour l'option 'option'

Al.exe attendait un argument à passer à une option de ligne de commande. Par exemple, si vous spécifiez l’option /title, vous devez passer une chaîne.
al1011 Le fichier 'fichier' est un fichier exécutable et ne peut pas être ouvert dans un fichier texte

Un fichier binaire a été spécifié alors qu'un fichier texte était attendu. Par exemple, cette erreur se produit si un fichier binaire est passé sur la ligne de commande en tant que fichier réponse.
al1012 'valeur' n'est pas un paramètre valide pour l'option 'option'

Une valeur inattendue a été passée à une option de ligne de commande. Par exemple, cette erreur se produit si vous spécifiez une valeur non valide pour l’option /target.
al1013 Option de ligne de commande non reconnue : 'option'

Une option de ligne de commande non valide a été spécifiée.
al1014 Erreur d'initialisation inattendue — 'raison'

Al.exe a détecté un échec de l'initialisation COM. Cela peut être dû à un manque de mémoire, mais plus vraisemblablement aux fichiers DLL système. Vous devez voir une erreur similaire si vous exécutez un programme prenant en charge l'automatisation ou COM, comme Microsoft Visual Studio.

Réinstallez le système d'exploitation.
al1015 Fichier de messages 'alinkui.dll' introuvable

Al.exe nécessite Alinkui.dll. Assurez-vous que ce fichier se trouve dans votre chemin d'accès. Si nécessaire, copiez-le à partir du CD du produit.
al1016 Aucun fichier d'entrée valide n'a été spécifié.

Al.exe nécessite un ou plusieurs fichiers d’entrée qui n’ont pas d’informations sur l’assembly.
al1017 Aucun nom de fichier cible n'a été spécifié.

L’option obligatoire /out spécifiant le nom du fichier cible est manquante.
al1018 Impossible de charger le fichier requis 'fichier'

Certains fichiers DLL ne peuvent pas être chargés. Réinstallez Visual Studio ou le SDK Windows.
AL1019 Échec des métadonnées pendant la création de l’assembly — raison

La génération de l'assembly a été interrompue pour la raison spécifiée. Par exemple, cette erreur se produit si un fichier que vous spécifiez avec l’option /win32res est introuvable.
al1020 L'assembly inclus 'fichier' est ignoré

Un fichier d'entrée qui contenait un assembly a été spécifié. Les fichiers d’entrée Al.exe ne peuvent pas contenir d’assemblys.
al1021 'paramètre' : substitution du paramètre précédent

Pour un paramètre particulier, un module avait une valeur, sans doute assignée par des attributs personnalisés, qui a été remplacée par une valeur passée à l’aide d’une option de ligne de commande Al.exe.
al1022 Erreur lors de la lecture de la ressource incorporée 'file' — raison

Al.exe ne peut pas lire le fichier passé à l’option /embedresource pour la raison spécifiée.
al1023 Erreur lors de l’incorporation de la ressource 'file' — raison

Le système d'exploitation ne peut pas incorporer le fichier de ressource dans l'assembly pour la raison spécifiée.
al1025 L'enregistrement ComType 'enregistrement' pointe vers un enregistrement de fichier non valide 'enregistrement'

Les métadonnées incluses dans le module d'entrée ne sont pas valides. L'outil qui a produit le module doit être corrigé.
al1026 La version spécifiée 'version' n'est pas valide

Consultez les informations sur l’option /version pour connaître les formats valides.
al1028 Le fichier de clé 'fichier' ne comprend pas la clé privée nécessaire à la signature

Un fichier de clé contenant uniquement la clé publique a été passé à l’option /keyfile. Utilisez l’outil Strong Name Tool (Sn.exe) pour générer un fichier qui a une clé publique et une clé privée, comme illustré dans la commande suivante.

sn -k keypair.snk.
al1029 Le nom de conteneur de clé 'container' n'existe pas

La valeur passée à l’option /keyname n’est pas un conteneur valide. Utilisez l’outil Strong Name Tool (Sn.exe) pour créer un conteneur.
al1030 Le service de chiffrement n'est pas installé correctement ou n'a pas de fournisseur de clé approprié

Vous devrez peut-être réinstaller le système d’exploitation ou installer l’utilitaire de chiffrement qui a été utilisé pour créer la clé.
al1031 Erreur lors de la lecture de l'icône 'file' — raison

Al.exe ne peut pas lire le fichier passé à l’option /win32icon pour la raison spécifiée
al1032 Erreur lors de la génération de ressources pour 'file' — raison

Al.exe ne peut pas créer un fichier en raison d’un espace disque insuffisant ou d’une autre erreur. Cette erreur se produit quand vous spécifiez l’option /win32icon (qui génère un fichier .ico) ou ne spécifiez pas l’option /win32res (qui génère un fichier contenant des informations sur les ressources).

Si vous ne pouvez pas résoudre le problème de génération de fichier, utilisez l’option /win32res, qui spécifie un fichier pouvant contenir des informations sur la version ou les bitmaps (icônes).
al1033 L'attribut personnalisé d'assembly 'attribut' a été spécifié plusieurs fois avec des valeurs différentes

Des valeurs différentes ont été passées à deux occurrences du même attribut personnalisé dans des modules sources spécifiés en tant qu’entrées dans Al.exe.
al1034 Impossible de copier ou renommer l'assembly 'fichier'

Quand vous avez utilisé la syntaxe Al.exe permettant de spécifier un fichier d’entrée et de le copier, un conflit de noms s’est produit et a arrêté le compilateur. Par exemple, cette erreur se produit si vous spécifiez input.dll,somename.dll /out:somename.dll.
al1035 Les bibliothèques ne peuvent pas avoir un point d'entrée

Vous ne pouvez pas spécifier l’option /target:lib (option par défaut) avec l’option /main.
al1036 Point d'entrée requis pour les applications exécutables

Quand vous utilisez l’option /target:exe ou /target:win, vous devez également spécifier l’option /main.
al1037 Impossible de trouver la méthode de point d'entrée 'main'

Al.exe n’a pas trouvé de méthode Main à l’emplacement spécifié par l’option /main.
al1039 Échec de l’initialisation du gestionnaire de Global Assembly Cache — raison

Réinstallez Visual Studio ou le SDK Windows.
al1040 Impossible d’installer l’assembly dans le cache — raison

Seuls les assemblys signés peuvent être installés dans le cache. Pour plus d’informations, consultez Global Assembly Cache.
al1041 'méthode' : ne peut pas être le point d'entrée car la signature ou la visibilité est incorrecte, ou elle est générique

Une méthode a été spécifiée avec l’option /main, mais cette méthode n’est pas statique, ne retourne pas int ou void, était générique ou contient des arguments non valides.
al1042 'exe' : les fichiers exe ne peuvent pas être des modules ajoutés

Un fichier .exe qui n’a pas d’assembly a été spécifié comme fichier d’entrée dans Al.exe. Al.exe accepte uniquement les fichiers dll sans assemblys en tant que fichiers d’entrée.
al1043 Le nom de fichier manifeste 'nom' ne peut pas être le même que ceux des modules

Le nom spécifié avec l’option /out ne peut pas être identique à l’un des noms de fichier spécifiés en entrée dans Al.exe.
al1044 Erreur lors de la lecture du fichier de clé 'file' — raison

Une erreur s’est produite lors de l’ouverture ou de la lecture d’un fichier spécifié avec /keyfile ou AssemblyKeyFileAttribute.
al1045 Le nom de fichier 'fichier' est trop long ou n'est pas valide

Un nom de fichier contenant plus de 260 caractères a été passé à Al.exe. Choisissez un nom de fichier comportant moins de caractères ou un chemin plus court, ou bien renommez le fichier.
al1046 L'identificateur de ressource 'ID' a déjà été utilisé dans cet assembly

Deux ressources, incorporées ou liées, ont le même identificateur ou nom (le deuxième argument). Supprimez ou renommez l'une des ressources en conflit.
al1047 Erreur lors de l’importation du fichier 'file' — raison

Impossible d'ouvrir un fichier de module pour la raison spécifiée.
al1048 Erreur lors de l’importation du module 'module' de l’assembly 'assembly' — raison

Une erreur s'est produite lors de l'ouverture d'un fichier sans manifeste d'un assembly multifichier. Cette erreur n'est pas émise directement par Al.exe., mais peut être passée par programmation à un processus utilisant Al.exe.
al1049 Impossible de générer automatiquement les numéros de version de build et de révision pour les dates antérieures au 1er janvier 2000

L'horloge système de votre ordinateur est définie à une date antérieure au 1er janvier 2000.
al1050 La fonctionnalité que vous utilisez 'ancienne fonctionnalité' n'est plus prise en charge ; utilisez plutôt 'nouvelle fonctionnalité'

Une fonctionnalité qui était prise en charge par Al.exe est désormais obsolète. Utilisez plutôt la fonctionnalité recommandée.
al1051 Erreur lors de l’émission de l’attribut 'attribute' — raison

Un attribut personnalisé d’assembly n’a pas été traité par Al.exe pour la raison spécifiée.
al1052 Le nom de fichier 'nom de fichier' n'est pas un assembly

Le fichier spécifié avec /template doit contenir des métadonnées d’assembly. Cette erreur indique que le fichier spécifié par /template ne contenait pas d’assembly.
al1053 La version 'version' spécifiée pour 'option' n'est pas au format normal 'major.minor.build.revision'

Al.exe a détecté que des informations de version spécifiées avec les options /fileversion ou /productversion ont un format incorrect.
al1054 La version 'version' spécifiée pour 'option' n'est pas au format normal 'major.minor.build.revision'

Al.exe a détecté des informations de version incorrectes spécifiées avec SatelliteContractVersionAttribute.
al1055 L'assembly référencé 'nom de fichier' n'a pas de nom fort

Cette erreur est émise quand vous générez un assembly avec un nom fort et référencez un assembly qui n'a pas de nom fort. Pour résoudre ce problème, vous devez regénérer votre assembly avec un nom fort ou joindre un nom fort à l’assembly en utilisant Sn.exe (consultez la documentation de Sn.exe).

Une occurrence courante de cette erreur se produit quand vous utilisez des objets COM au moyen d'assemblys de wrappers, par exemple quand vous ajoutez une référence à un module COM à un projet C# au moyen de l'IDE de Visual Studio. Pour éviter cette erreur, vous pouvez spécifier le fichier de clé de nom fort pour les assemblys de wrappers COM dans la propriété de projet "Fichier de clé de l'assembly de wrappers/Nom de clé d'assembly de wrappers"

Si vous créez l'assembly de wrappers par le biais de tlbimp, consultez la documentation tlbimp pour plus d'informations sur l’attribution d’un nom fort à l'assembly de wrappers.

Si un assembly porte un nom fort, il peut être installé dans le Global Assembly Cache. Par conséquent, les assemblys référencés sont également placés dans le Global Assembly Cache. Seuls les assemblys portant des noms forts peuvent être placés dans le Global Assembly Cache.
al1056 L'assembly référencé 'nom de fichier' est un assembly satellite localisé

Un assembly créé à l'aide de l'attribut AssemblyCultureAttribute a été référencé lors de la création de l'assembly actuel. L'attribut AssemblyCultureAttribute indique que le fichier est un assembly satellite localisé et qu'il n'est pas approprié de référencer un assembly satellite. Faites plutôt référence à l’assembly parent principal.
al1057 Les exécutables ne peuvent pas être localisés, le champ Culture doit toujours être vide

Un assembly est créé avec /target:exe, mais /culture a été spécifié. Les assemblys inclus dans le fichier .exe ne peuvent pas contenir d’informations dans le champ Culture.
al1058 'fichier' est un assembly et ne peut pas être référencé en tant que module

Dans une compilation C++, un fichier contenant un assembly a été passé à /assemblymodule (option de l’éditeur de liens).
al1059 Erreur inconnue (code)

Al.exe a reçu un code d’erreur inconnue code).

Les solutions possibles incluent les suivantes :

Réinstallez Visual Studio.

Réinstallez le SDK Windows.

Vérifiez s'il manque des fichiers.

Vérifiez que l'espace disque est suffisant.

Vérifiez que la mémoire est adéquate.

Arrêtez les autres processus susceptibles d'accéder aux fichiers.

Redémarrez votre ordinateur.
al1060 Échec du chiffrement pendant la création des hachages — raison

Une erreur s'est produite lors de la création les hachages de fichier pour un assembly multifichier.
al1061 Impossible de définir l'option 'option' car 'raison'

La valeur spécifiée pour cette option n'est pas valide pour la raison spécifiée.
al1062 Le module 'module' a été spécifié plusieurs fois ; il sera inclus une seule fois

Cet avertissement est généré quand le même fichier source, d'entrée ou de module est spécifié plusieurs fois sur la ligne de commande. Assurez-vous de spécifier le nom de fichier une seule fois.
al1063 Le type public 'type' est défini à plusieurs emplacements dans cet assembly : 'fichier1' et 'fichier2'

Le même type a été trouvé dans plusieurs modules dans l'assembly. Une seule version de chaque type peut être présente dans un assembly.
al1064 Impossible de spécifier plusieurs options /bugreport.

Une seule option /bugreport est autorisée.
al1065 Le nom de fichier 'Nom de fichier' est trop long ou non valide

Le nom de fichier spécifié est plus long que le maximum autorisé.
al1066 Le caractère 'character' n’est pas autorisé sur la ligne de commande ou dans les fichiers réponse

Un caractère non valide a été trouvé sur la ligne de commande ou dans un fichier.
al1067 'nom de fichier' est un fichier binaire et non un fichier texte

Le fichier est au format binaire plutôt que texte.
al1068 Le module 'nom du module' est déjà défini dans cet assembly. Chaque ressource et module liés doivent porter un nom de fichier unique.

Le module apparaît plusieurs fois dans cet assembly.
al1069 Impossible de créer le nom de fichier court 'nom de fichier' quand un nom de fichier long portant le même nom de fichier court existe déjà

Le fichier actuel porte un nom qui est la version courte d'un nom de fichier qui existe déjà. Par exemple, la compilation de LongFileName.cs suivie de la recompilation du nom LongFi ~ 1.cs entraîne une erreur du compilateur semblable à celle-ci. Si les fichiers de sortie du compilateur qui portent des noms longs ont été supprimés, alors que les fichiers de l'éditeur de liens analogues ont été conservés, cette erreur risque de se produire.
al1070 Un assembly agnostique ne peut pas avoir un module 'Module Name' propre au processeur

Si vous effectuez la génération avec l’option /platform:agnostic (ou que vous ne spécifiez pas /platform), une erreur se produit si vous essayez d’ajouter un module (avec /addmodule) qui n’est pas agnostique. Cela équivaut à essayer de lier un fichier obj i386 à un obj ia64.

La source principale de modules non agnostiques est C++. Si vous utilisez /addmodule avec un module C++, vous pouvez être amené à modifier vos scripts de build pour spécifier le paramètre /platform approprié.
al1072 L'assembly et le module 'Nom du module' ne peuvent pas cibler des processeurs différents

Vous ne pouvez pas lier un assembly et un module qui sont ciblés pour des processeurs différents, car le résultat doit s'exécuter sur un seul processeur.
al1073 L'assembly référencé 'assembly' cible un processeur différent

Vous ne pouvez pas lier des assemblys qui sont ciblés pour des processeurs différents, car le résultat doit s'exécuter sur un seul processeur.
al1074 Le nom de module 'Nom du module' stocké dans 'Nom du fichier' doit correspondre à son nom de fichier

Cette correspondance est requise pour l'éditeur de liens. Pour résoudre ce problème, faites correspondre les deux noms.
al1075 Une signature différée a été demandée, mais aucune clé n'a été fournie

Pour un assembly avec signature différée, le compilateur ne calcule pas, ni ne stocke la signature, mais réserve de l'espace dans le fichier pour que la signature puisse être ajoutée par la suite.

Par exemple, l’utilisation de /delaysign+ permet à un testeur d’insérer l’assembly dans le cache global. Après un test, vous pouvez signer complètement l’assembly en ajoutant la clé privée à l’assembly à l’aide de l’utilitaire Assembly Linker.
al1076 Le type 'type' est transféré à plusieurs assemblys : 'assembly' et 'assembly'.

Un type peut être transféré à un seul assembly.
al1077 Le type public 'type' est défini dans 'assembly' et transféré à 'assembly'.

Il existe un type public en double dans l'assembly généré. L'un d'eux est une définition de type valide et l'autre est un redirecteur de type.

Exemple

La commande suivante crée un fichier exécutable t2a.exe avec un assembly dans le module t2.netmodule. Le point d'entrée est la méthode Main dans MyClass.

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

Voir aussi