Les code natif interfaces de programmation (API) qui vous permettent d'interagir avec le Global Assembly Cache (GAC) ne sont pas expliquées dans la documentation Kit de développement SDK .NET Framework.
attention : ne pas utiliser ces API dans votre application pour effectuer des liaisons d'assembly ou pour tester la présence d'assemblys ou autres temps d'exécution, développement ou opérations DTC. Uniquement les outils d'administration et les programmes d'installation doivent utiliser ces API. Si vous utilisez le cas, cela directement expose votre application assembly liaison fragility ou peut-être entraîner votre application fonctionnement incorrectement sur les versions futures de .NET Framework.
Le cache d'assembly global stocke les assemblys qui sont partagés par toutes les applications sur un ordinateur. Le d'emplacement de stockage réel et de structure du cache d'assembly global n'est pas documentée et sont susceptibles d'être modifiées dans les versions futures de .NET Framework et le système d'exploitation Microsoft Windows.
La seule méthode prise en charge aux accès des assemblys dans le GAC consiste via les API qui sont documentées dans cet article.
La plupart des applications est inutile d'utiliser ces API, car l'assembly de liaison est effectuée automatiquement par le common language runtime. Uniquement des programmes d'installation personnalisée ou des outils de gestion doivent utiliser ces API. Microsoft Windows Installer prend en charge native Installation des assemblys dans le cas.
Pour plus d'informations sur les assemblys et le cas, consultez le Kit de développement logiciel (SDK) .NET Framework.
Utiliser l'API de cache d'assembly global dans les scénarios suivants :
Lorsque vous installez un assembly pour le cache d'assembly global.
Lorsque vous supprimez un assembly dans le cas.
Lorsque vous exporter un assembly dans le cas.
Lorsque vous énumérer les assemblys qui sont disponibles dans le GAC.
Remarque : CoInitialize(Ex) doit être appelée avant que vous utiliser toutes les fonctions et les interfaces qui sont décrites dans cette spécification.
Interface IAssemblyCache
L'interface IAssemblyCache est l'interface de niveau supérieur qui permet d'accéder au cache d'assembly global.
Pour obtenir une instance de CreateAssemblyCache API, appelez CreateAssemblyCache API, comme suit :
ppAsmCache - pointeur pour renvoyer IAssemblyCache
dwReserved
Structure FUSION_INSTALL_REFERENCE
La structure FUSION_INSTALL_REFERENCE représente une référence qui est effectuée lorsqu'une application a installé un assembly dans le GAC.
typedef struct _FUSION_INSTALL_REFERENCE_
{
DWORD cbSize;
DWORD dwFlags;
GUID guidScheme; // Contains one of the pre-defined GUIDs.
LPCWSTR szIdentifier; // Unique identifier for the application that installs this assembly.
LPCWSTR szNonCannonicalData; // Data is description; relevant to the GUID above.
} FUSION_INSTALL_REFERENCE, *LPFUSION_INSTALL_REFERENCE;
FUSION_INSTALL_REFERENCE}, * LPFUSION_INSTALL_REFERENCE ; les champs de la structure sont définis comme suit :
cbSize - la taille de la structure en octets.
dwFlags - réservé, doit être de zéro.
guidScheme - l'entité qui ajoute la référence.
szIdentifier - une chaîne unique qui identifie l'application installée l'assembly.
szNonCannonicalData - une chaîne qui est compris uniquement par l'entité qui ajoute la référence. Le cache d'assembly global stocke uniquement cette chaîne.
Valeurs possibles du champ guidScheme peuvent être une des options suivantes :
FUSION_REFCOUNT_MSI_GUID - l'assembly est référencée par une application qui a été installée à l'aide de Windows Installer. Le champ szIdentifier est défini pour MSI et szNonCannonicalData est défini sur Windows Installer . Ce schéma doit uniquement être utilisé par Windows Installer proprement dit.
FUSION_REFCOUNT_UNINSTALL_SUBKEY_GUID - l'assembly est référencée par une application qui s'affiche dans Ajout/Suppression de programmes . Le champ szIdentifier est le jeton qui sert à inscrire l'application dans Ajout/Suppression de programmes .
FUSION_REFCOUNT_FILEPATH_GUID - l'assembly est référencée par une application qui est représentée par un fichier dans le système de fichiers. Le champ szIdentifier est le chemin d'accès à ce fichier.
FUSION_REFCOUNT_OPAQUE_STRING_GUID - l'assembly est référencée par une application qui est uniquement représentée par une chaîne opaque. Le szIdentifier est cette chaîne opaque. Le cache d'assembly global n'effectue pas existence la vérification des références opaques lorsque vous supprimez ce.
Structure ASSEMBLY_INFO
La structure ASSEMBLY_INFO représente des informations sur un assembly dans le cache d'assembly.
Les champs de la structure sont définis comme suit :
cbAssemblyInfo - taille de la structure d'octets. Autorise les ajouts à la structure dans future version de .NET Framework.
dwAssemblyFlags - indique un ou plusieurs des bits ASSEMBLYINFO_FLAG_ * .
uliAssemblySizeInKB - la taille des fichiers qui constituent l'assembly en kilo-octets (Ko).
pszCurrentAssemblyPathBuf - un pointeur vers un tampon de chaîne contenant le chemin du répertoire en cours contient les fichiers qui constituent l'assembly. Le chemin d'accès doit se terminer par un zéro.
cchBuf - taille de champ pszCurrentAssemblyPathBug pointe vers le tampon.
dwAssemblyFlags peut avoir un des valeurs suivantes :
ASSEMBLYINFO_FLAG__INSTALLED - indique que l'assembly est effectivement installé. Définissez toujours dans la version actuelle du .NET Framework.
ASSEMBLYINFO_FLAG__PAYLOADRESIDENT - jamais défini dans la version actuelle du .NET Framework.
IAssemblyCache::UninstallAssembly, méthode
La méthode IAssemblyCache::UninstallAssembly supprime une référence à un assembly dans le cas. Si d'autres applications ne contenir aucune autre référence à l'assembly, les fichiers qui constituent l'assembly sont supprimés dans le cas.
dwFlags - non indicateurs définis. Doit être égale à zéro.
pszAssemblyName - le nom de l'assembly. Un Unicode nulle terminé chaîne.
pRefData - un pointeur vers une structure FUSION_INSTALL_REFERENCE . Bien que cela ne soit pas recommandé, ce paramètre peut être null. L'assembly est installé sans une référence de l'application, ou toutes les références d'application existantes ont disparu.
pulDisposition - pointeur à l'entier qui indique l'action effectuée par la fonction.
Remarque : si pulDisposition n'est pas null, pulDisposition contient l'une des valeurs suivantes :
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_UNINSTALLED - assembly de fichiers ont été supprimés dans le cas.
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_STILL_IN_USE - application utilise l'assembly. Cette valeur est renvoyée sous Microsoft Windows 95 et Microsoft Windows 98.
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_ALREADY_UNINSTALLED - l'assembly n'existe pas dans le GAC.
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_DELETE_PENDING - non utilisé.
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_HAS_INSTALL_REFERENCES - l'assembly n'a pas été retiré du GAC car une autre application référence existe.
IASSEMBLYCACHE_UNINSTALL_DISPOSITION_REFERENCE_NOT_FOUND - la référence qui est spécifié dans pRefData est introuvable dans le GAC.
Les valeurs de retour sont définis comme suit :
S_OK - l'assembly a été désinstallé.
S_FALSE - l'opération a réussi, mais l'assembly n'a pas supprimé du cache d'assembly global. La raison est décrite dans pulDisposition .
IAssemblyCache::QueryAssemblyInfo, méthode
La méthode IAssemblyCache::QueryAssemblyInfo récupère les informations sur un assembly dans le cas.
dwFlags - une des QUERYASMINFO_FLAG_VALIDATE ou QUERYASMINFO_FLAG_GETSIZE :
* _VALIDATE -effectue la validation des fichiers dans le GAC contre le manifeste d'assembly, y compris vérification du hachage et vérification de signature de nom fort.
* _GETSIZE -renvoie la taille de tous les fichiers dans l'assembly encombrement de disque. Si ce n'est pas spécifié, le champ ASSEMBLY_INFO::uliAssemblySizeInKB n'est pas modifié.
pszAssemblyName - nom de l'assembly qui est interrogée.
pAsmInfo - pointeur sur la structure ASSEMBLY_INFO renvoyée.
IAssemblyCache::InstallAssembly, méthode
La méthode IAssemblyCache::InstallAssembly ajoute un nouvel assembly pour le cache d'assembly global. L'assembly doit être conservé dans le système de fichiers et est copié dans le cas.
HRESULT InstallAssembly( // If you use this, fusion will do the streaming & commit.
[in] DWORD dwFlags,
[in] LPCWSTR pszManifestFilePath,
[in] LPCFUSION_INSTALL_REFERENCE pRefData
);
les paramètres sont définis comme suit :
dwFlags - au plus, parmi les bits des valeurs IASSEMBLYCACHE_INSTALL_FLAG_ * peut être spécifié :
* _REFRESH - si l'assembly est déjà installé dans le GAC et les numéros de version fichier de l'assembly en cours d'installation sont identiques ou version ultérieure, les fichiers sont remplacés.
* _FORCE_REFRESH -les fichiers d'un assembly existant sont remplacés, quel que soit leur numéro de version.
pszManifestFilePath - chaîne pointant vers la bibliothèque dynamic-linked (DLL) qui contient le manifeste de l'assembly. Autres fichiers assembly doivent résider dans le même répertoire que la DLL qui contient le manifeste de l'assembly.
pRefData - un pointeur vers un FUSION_INSTALL_REFERENCE qui indique l'application sur dont part l'assembly est installé. Bien que cela ne soit pas recommandé, ce paramètre peut être null, mais cela laisse l'assembly sans toute référence d'application.
Interface IAssemblyName
L'interface IAssemblyName représente un nom d'assembly. Un nom de l'assembly inclut un ensemble prédéfini de paires nom-valeur. Le nom de l'assembly est décrit dans en détail dans le Kit de développement logiciel (SDK) .NET Framework.
ppAssemblyNameObj - pointeur sur un emplacement mémoire qui reçoit le pointeur IAssemblyName qui est créé.
szAssemblyName - représentation de chaîne de nom d'assembly ou une référence d'assembly complet est déterminée par dwFlags . La représentation de chaîne peut être nulle.
dwFlags - zéro ou plus des bits qui sont définies dans l'énumération CREATE_ASM_NAME_OBJ_FLAGS .
pvReserved - doit être null.
CREATE_ASM_NAME_OBJ_FLAGS, énumération
L'énumération CREATE_ASM_NAME_OBJ_FLAGS contient les valeurs suivantes :
CANOF_PARSE_DISPLAY_NAME - si cet indicateur est spécifié, le paramètre de szAssemblyName est un nom d'assembly complet et est analysé pour les propriétés individuelles. Si l'indicateur n'est pas spécifié, szAssemblyName est la partie « nom » du nom d'assembly.
CANOF_SET_DEFAULT_VALUES - si cet indicateur est propriétés spécifiées, certains, comme architecture de processeur, sont définies sur leurs valeurs par défaut.
L'ID de propriété d'énumération ASM_NAME décrit les noms valides des paires nom-valeur dans un nom d'assembly. Consultez le kit SDK Framework .NET pour une description de ces propriétés.
La méthode IAssemblyName::SetProperty ajoute une paire nom-valeur de l'assembly, ou, si une paire nom-valeur portant le même nom existe déjà, modifie ou supprime la valeur d'une paire nom-valeur.
PropertyId - ID qui représente la partie nom de la paire nom-valeur qui est à ajouter ou à modifier. ID de propriété valide est définies dans l'énumération ASM_NAME .
pvProperty - un pointeur vers un tampon qui contient la valeur de la propriété.
cbProperty - la longueur du tampon pvProperty en octets. Si cbProperty est égale à zéro, la paire nom-valeur est supprimée à partir du nom d'assembly.
IAssemblyName::GetProperty, méthode
La méthode IAssemblyName::GetProperty extrait la valeur d'une paire nom-valeur dans le nom d'assembly qui spécifie le nom.
PropertyId - ID qui représente le nom de la paire nom-valeur dont la valeur doit être récupéré. ID de propriété spécifié est définies dans l'énumération ASM_NAME .
pvProperty - un pointeur vers un tampon qui doit contenir la valeur de la propriété.
cbProperty - la longueur du tampon pvProperty , en octets.
IAssemblyName::Finalize, méthode
La méthode IAssemblyName::Finalize fige un nom d'assembly. Appels supplémentaires de IAssemblyName::SetProperty sont échoue après que cette méthode a été appelée.
HRESULT Finalize();
IAssemblyName::GetDisplayName, méthode
La méthode IAssemblyName::GetDisplayName renvoie une représentation de chaîne de nom d'assembly.
ppName - pointeur dans un emplacement mémoire qui doit recevoir le pointeur d'interface sur le nom d'assembly de l'assembly suivant qui est énuméré.
dwFlags - doit être de zéro.
Interface IInstallReferenceItem
L'interface IInstallReferenceItem représente une référence qui a été définie sur un assembly dans le GAC. Instances de IInstallReferenceIteam sont renvoyés par l'interface IInstallReferenceEnum .
ppRefData - un pointeur vers une structure FUSION_INSTALL_REFERENCE . La mémoire est affectée par la méthode GetReference et est libérée lorsque IInstallReferenceItem est lancé. Appelants ne doivent pas conservent une référence à cette mémoire tampon après publication de l'objet IInstallReferenceItem .
dwFlags - doit être de zéro.
pvReserved - doit être null.
Interface IInstallReferenceEnum
L'interface IInstallReferenceEnum énumère toutes les références qui sont définies sur un assembly dans le GAC.
Remarque : les références qui appartiennent à l'assembly sont verrouillés pour modifications lors de ces références sont en cours énumérés.
Numéro d'article: 317540 - Dernière mise à jour: vendredi 4 avril 2003 - Version: 3.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
Microsoft .NET Framework Software Development Kit 1.0 Service Pack 2
Mots-clés :
kbmt kbbug kbdocerr kbpending KB317540 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 317540
(http://support.microsoft.com/kb/317540/en-us/
)
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.
Quel niveau d'effort avez-vous dû personnellement fournir pour utiliser cet article ?
Très faible
Faible
Moyen
Elevé
Très élevé
Dites-nous pourquoi et ce que nous pouvons faire pour améliorer ces informations.
Merci ! Vos commentaires sont très utiles pour l'amélioration de notre contenu d'aide et de support. Si vous avez besoin d'aide complémentaire, veuillez consulter la page d'accueil d'aide et support.