Site:  Cours VB.net  
D 1.1.2 Assembly

 

Avant VB.Net, on enregistrait les références des programmes, des dll.. dans le registre, l'installateur enregistrait le nom et l'emplacement du fichier .exe ou de la Dll; c'était une belle pagaille:

quand on installait 2 dll différentes de même nom.

quand il y avait plusieurs versions d'une même dll

quand on déplaçait un programme!!

quand on mettait à jour une dll qui ne respectait pas la compatibilité ascendante.

Maintenant cela ne se fait plus; en VB.Net on utilise les Assembly.

 

 Assembly: définition, composition.

Un Assembly est une unité de déploiement indivisible.

Il se caractérise par son identité (propriétés de l'assembly)

un nom

une version

un identificateur de culture

une clé publique

Il contient:

la liste de l'ensemble des fichiers (exe, dll, données, images, ressources)

les méta données (informations descriptives des Types et Classes publiques)

L'énumération des autres Assembly dont l'application dépend et leurs dépendances.

l'ensemble des autorisations requises pour que l'assembly fonctionne correctement.

 

Ces informations sont utilisées au moment de l'exécution pour résoudre les références, appliquer la stratégie de liaison des versions et valider l'intégrité des assemblys chargés.

Toutes ses informations sont stockées dans le "manifeste" de l'Assembly.

En conclusion:

Pour les installations de programme , mises à jour, utilisation de composants propres au programme ou partagés avec d'autres programmes; pour gérer les versions, éviter les problèmes de conflit de composants, VB.Net utilise donc les assembly (ou assemblage).

 

 Les propriétés de l'assembly:

Voir les propriétés de l'Assembly:

Pour cela ouvrir les propriétés du projet (cliquer sur MyProjet dans l'explorateur de solution ou passer par le menu Projet->Propriétés de..)

Dans l'onglet Application cliquer sur le bouton 'Informations de l'assembly':

On a accès au titre, à la description, à la société, au produit, au copyright, à la marque, à la version de l'assembly, à la version du fichier, au GUID, à la langue.

On peut aussi le voir en XML: dans l'explorateur de solution, double-cliquer sur Assemblyinfo.vb, la fenêtre principale s'ouvre permettant d'avoir accès à certaines données:

Imports System

Imports System.Reflection

Imports System.Runtime.InteropServices

' Les informations g‚n‚rales relatives … un assembly d‚pendent de

' l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations

' associ‚es … un assembly.

' V‚rifiez les valeurs des attributs de l'assembly

<Assembly: AssemblyTitle("Bonjour")>

<Assembly: AssemblyDescription("")>

<Assembly: AssemblyCompany("Polytel")>

<Assembly: AssemblyProduct("Bonjour")>

<Assembly: AssemblyCopyright("Copyright ¸ Polytel 2006")>

<Assembly: AssemblyTrademark("")>

<Assembly: ComVisible(False)>

'Le GUID suivant est pour l'ID de la typelib si ce projet est expos‚ … COM

<Assembly: Guid("9a8cb33c-3392-44a0-a86d-c7164dfa91c1")>

' Les informations de version pour un assembly se composent des quatre valeurs suivantesÿ:

'

' Version principale

' Version secondaire

' Num‚ro de build

' R‚vision

'

' Vous pouvez sp‚cifier toutes les valeurs ou indiquer les num‚ros de build et de r‚vision par d‚faut

' en utilisant '*', comme indiqu‚ ci-dessousÿ:

' <Assembly: AssemblyVersion("1.0.*")>

<Assembly: AssemblyVersion("1.0.0.0")>

<Assembly: AssemblyFileVersion("1.0.0.0")>

 

 

 

 Le manifeste:

Toutes les informations de l'assembly sont stockées dans le "manifeste".

Le manifeste qui est un fichier en XML se trouve dans:

 myapplication\myapplication\bin\debug\myapplication.publish\myapplication_1_0_0_0\myapplivation.exe.manifest

myapplication\myapplication\publish\myapplication_1_0_0_0\myapplivation.exe.manifest

Pour info, voici un exemple de contenu:

<?xml version="1.0" encoding="utf-8"?>

<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<asmv1:assemblyIdentity name="myapplication.exe" version="1.0.0.0" publicKeyToken="612c3b94c96b9edf" language="neutral" processorArchitecture="msil" type="win32" />

<application />

<entryPoint>

<assemblyIdentity name="myapplication" version="1.0.0.0" language="neutral" processorArchitecture="msil" />

<commandLine file="myapplication.exe" parameters="" />

</entryPoint>

<trustInfo>

<security>

<applicationRequestMinimum>

<PermissionSet Unrestricted="true" ID="Custom" SameSite="site" />

<defaultAssemblyRequest permissionSetReference="Custom" />

</applicationRequestMinimum>

</security>

</trustInfo>

<dependency>

<dependentOS>

<osVersionInfo>

<os majorVersion="4" minorVersion="10" buildNumber="0" servicePackMajor="0" />

</osVersionInfo>

</dependentOS>

</dependency>

<dependency>

<dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true">

<assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="2.0.50727.0" />

</dependentAssembly>

</dependency>

<dependency>

<dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="myapplication.exe" size="28672">

<assemblyIdentity name="myapplication" version="1.0.0.0" language="neutral" processorArchitecture="msil" />

<hash>

<dsig:Transforms>

<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />

</dsig:Transforms>

<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />

<dsig:DigestValue>IK0J8Ge5ABv5RfyMrgdRoMoy/Gc=</dsig:DigestValue>

</hash>

</dependentAssembly>

</dependency>

<publisherIdentity name="CN=CABINET\Philippe" issuerKeyHash="6d35a155f760c5d6ce1866b24dc5b27e833af918" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod

.....

.....

Vous n'avez pas à l'ouvrir et à le modifier.

Signature d'un Assembly:

 

Article par webman sur developpez.com+++