look at my passport。 The passport approach works; but it has a long; ugly number that is hard to remember。 The assembly name Implementations2。dll is a simple assembly identifier like Christian Gross。 The following is the precise identifier of the assembly。 Implementations2; Version=1。0。0。0; Culture=neutral; PublicKeyToken=6bc4c8c27c08ba48 The identifier is quite a mouthful; but it says everything you need to know。 This specifies the name as Implementations2; the version number; the culture (bination of language and country); and a fixed…signed identifier。 When culture is defined as neutral; it means that only the language is taken into account and not the country…specific bit。 For example; if the culture is en…CA; with neutral; the CA bit will be ignored; which means a neutral form of English; known in this context as international English; will be used。 Using all of these attributes; you can uniquely identify an assembly。 This lets you load a specific version of the assembly; allowing multiple similar assemblies to be loaded simulta neously。 This specific referencing lets you to use ponents according to version and language。 The extra information is specified in the source code file AssemblyInfo。vb。 If you want to edit this file; select the project and then choose Project Show All Files。 You’ll find the AssemblyInfo。vb file under the My Project node in the Solution Explorer。 Following is the plete implementation for Implementations2。dll。 Imports System Imports System。Reflection Imports System。Runtime。InteropServices " General Information about an assembly is controlled through the following " set of attributes。 Change these attribute values to modify the information " associated with an assembly。 …………………………………………………………Page 354…………………………………………………………… 332 CH AP T E R 1 2 ■ L E A R N I N G A B OU T A PP L I CA TI O N CO N F I G U R AT IO N AN D D Y N A M I C L O AD I N G " Review the values of the assembly attributes "The following GUID is for the ID of the typelib if this project is exposed to " Version information for an assembly consists of the following four values: " " Major Version " Minor Version " Build Number " Revision " " You can specify all the values or you can default the Build and Revision Numbers " by using the "*" as shown here: " Notice that all of the assembly descriptors are declared as attributes。 The bolded attributes reference the version of the assembly。 By adjusting these attributes; you can tweak which assembly is loaded; as explained in more detail in the uping “Versioning Assemblies” section。 To load a specific assembly; you need to create an assembly name; like this: Dim assemblyName As AssemblyName = New AssemblyName(value) Dim assembly As Assembly = Assembly。Load(assemblyName) Dim obj As Object = assembly。CreateInstance(info。TypeName) The variable value contains the precise identifier of the assembly and is passed as a constructor parameter to AssemblyName。 The resulting AssemblyName instance is passed to the method Assembly。Load(); which loads the assembly。 The instantiation of the type follows the same sequence as previously outlined。 Note that there is no indication of where the assembly is located。 The default locations that are probed are the local working directory of the executing process and the GAC。 …………………………………………………………Page 355…………………………………………………………… CH AP T E R 1 2 ■ L E AR N IN G AB O U T AP P L I CAT I ON CO N F IG U R AT IO N A N D D Y N A M IC L O AD IN G 333 ■Note For more details about assembly loading; see Pro VB 2008 and the 3。5 Platform; Third Edition by Andrew Troelsen (Apress; 2008)。 Relocating a Strongly Named Assembly to the GAC Besides having the ability to tweak which assembly is loaded; another reason to use the precise assembly name is to have the ability to load an assembly from the GAC。 The GAC is a place where assemblies can be placed to have global shared access。 Think of the GAC as the WindowsSystem32 directory of the environment。 The precise location for the GAC is c:windowsassembly。 Even though the GAC is just another directory; you should not just delete and add assemblies there; as you would with any other directory。 To delete a file from the GAC; use the context sensitive Uninstall menu item (in Windows Explorer right…click the assembly you want to uninstall and select Uninstall)。 To add an assembly to the GAC; use the utility gacutil; which is distributed with the SDK (not with Visual Basic Express)。 You can locate it at C:Program FilesMicrosoft SDKs Windowsv6。0Bin or similar。 Add this directory to your path so that you can run gacutil anywhere。 The following mand lines demonstrate how to add the Definitions and Implementations2 assemblies to the GAC (assuming the files implementations2。dll and definitions。dll reside in the current directory)。 gacutil /I definit