嗔秤戻幣�哉膵�云利匈嬉蝕湊蛸賜�塋床四衲���萩晦編報炎嘔囚^泡仟 ̄云利匈�《超噌�殻窟�嵌虜隆輓麈觚翹瀘卉韮�仍仍�。� 烏御危列
浪慕利 卦指云慕朕村 厘議慕尺 厘議慕禰 TXT畠云和墮 序秘慕杏 紗秘慕禰

VB2008貫秘壇欺娼宥(PDF鯉塀哂猟井)-及120嫗

梓囚徒貧圭�鮗� ○ 賜 ★ 辛酔堀貧和鍬匈��梓囚徒貧議 Enter 囚辛指欺云慕朕村匈��梓囚徒貧圭�鮗� ● 辛指欺云匈競何��
!!!!隆堋響頼��紗秘慕禰厮宴和肝写偬堋響��




           that open source projects make multiple versions available。 In the example�察�you should down

           load version 4。23�察�because 4。29 is a beta that may or may not work。 Version 4。23 is considered  

           stable and therefore usable。 

                The open source munity will often use the following terminology when releasing  

           software。 



               o  Stable�此�A version that can be used in a production environment and should not crash。 



               o   Unstable�此�A version that should not be used in production。 It will probably work�察�but  

                  have some crashes。 



               o  Nightly�此�A version with all bets off�察�meaning that the version may or may not work。 The  

                  reason for using a nightly build is to monitor progress and check specific issues。 Such a  

                  version is not intended for consumer consumption�察�it is intended solely for developers。 



               o  Alpha �此�A version that demonstrates the concepts that will make up a future version of the  

                  software。 However�察�in alpha versions�察�what was available one day might be gone the  

                  next day。 


´´´´´´´´´´´´´´´´´´´´´´Page 357´´´´´´´´´´´´´´´´´´´´´´´

          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 335 



Versioning Assemblies 



 assembly version numbers are different from those used for open source packages。 The  

following is an example of versioning an assembly。 



 

 



     The attributes AssemblyVersion and AssemblyFileVersion can be added anywhere in the  

assembly or application。 In Visual Basic Express�察�most likely the attributes are added to the file  

AssemblyInfo。vb。 

     The versions of the file have four significant parts。 From left to right�察�these are major  

version�察�minor version�察�build number�察�and revision。 The build number can represent a daily  

build number�察�but this is not required。 The revision identifier can represent a random number�察 �

but this is not required either。 For my assemblies�察�I use a revision number of 0�察�and consider the  

build number as a patch number。 

     Visual Basic Express has a built´in mechanism that automatically updates the build and  

revision numbers。 Here�察�the asterisk represents the auto´increment�此�



 



     Alternatively�察�you can use a versioning tool�察�or you can increment the numbers manually。  

The gacutil tool can be executed multiple times with multiple versions�察�as shown in Figure 12´4。 



*Note  For more information about using versioning tools�察�see this blog entry about auto´incrementing  

assembly versions�此�http��//weblogs。asp/bradleyb/archive/2005/12/02/432150。aspx。 



Figure 12´4。 An assembly added three times to the GAC with three different versions 



     In Figure 12´4�察�the assembly VersioningAssembly has been added three times to the GAC  

with three different versions ��1。0。0。0�察�1。1。0。0�察�an d 1。2。0。0��。 With the GAC in this state�察�an appli

cation or another assembly has the option to reference three different versions of the same  

assembly。 


´´´´´´´´´´´´´´´´´´´´´´Page 358´´´´´´´´´´´´´´´´´´´´´´´

336       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 



                For an application or assembly to use another assembly�察�you create a reference。 When the  

          application or assembly is piled�察�a specific version number of the assembly is referenced。  

          For example�察�if a reference to the version 1。1。0。0 of VersioningAssembly is defined�察�then version  

           1。1。0。0 of the assembly is loaded。 



          Adding an Assembly Redirection to a Configuration File 



          Let¨s say an application or assembly needs to use a new version of the VersioningAssembly  

          assembly。 To make the application or assembly aware of the new assembly�察�you update the  

          application or assembly configuration file that references the old assembly。 The configuration  

          file update includes an assembly redirection。 Essentially�察�what the redirection says is that if a  

          certain version of an assembly is requested�察�the new version should be loaded。 The following is  

          an example of an assembly redirection。 



           

           

             

               

                 

                   

                   

                 

               

             

           



                This configuration file includes an assemblyBinding XML element that defines a collection  

          of assemblies that will be affected。 The collection of assemblies is embedded within the  

          dependentAssembly element。 Within the dependentAssembly element are two child elements�此 �

          assemblyIdentity and  bindingRedirect。 The assemblyIdentity element is used to identity the  

          assembly for which a reference will be redirected。  

                The bindingRedirect element contains two attributes�此�oldVersion and  newVersion。 The  

          oldVersion attribute identifies the version of the old assembly in the calling assembly or appli

          cation。 If the specified version of the old assembly is found�察�the newVersion attribute is used to  

          identify which assembly version should be used instead。 In the example�察�the old version is 1。1。0。0�察 �

          and the new version is 1。2。0。0。 The new version has an incremented minor number�察�indicating  

          a new version of an assembly。 However�察�the binding redirection does not care whether the  

           newVersion attribute references a newer version or an older version。 The version identifiers  

          identified by the attributes newVersion and oldVersion are just that�此�identifiers。 


´´´´´´´´´´´´´´´´´´´´´´Page 359´´´´´´´´´´´´´´´´´´´´´´´

          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 337 



Implementing a Shared Typed Convention´Based  

Architecture 



There has been quite a bit of talk in the software munity about convention over configu

ration。 Most of this talk began in earnest with the development of Ruby on Rails ��http��// 

rubyonrails。org/��。 Ruby on Rails ��Rails for short�� is a tool that allows people to very  

quickly create web sites that provide useful functionality。  

     Many attribute the success of Rails to its use of convention over configuration。 Some say  

it is the Ruby language。 Others say it is because Rails is a professional product。 I believe it¨s a  

bination of factors�察�but the convention over configuration angle does play an important role。 

     Let¨s go back to the problem of loading code dynamically�察�or for that matter�察�executing  

code dynamically。 How much do you expect the programmer to know�察�and how much do you  

expect the programmer to guess�拭�Consider this code�此�



Interface IDefinition 

End Interface  



Sub DoIt��ByVal def As IDefinition�� 

   ' Do Something with def 

End Sub 



     In the code�察�you can see an interface IDefinition and a method DoIt�┌��察�with a parameter  

of type IDefinition。 This creates a contract where to call DoIt�┌��察�you need to pass an instance  

of type IDefinition。 

     Is it correct to assume that the dynamic loading of a type can fulfill the 
卦指朕村 貧匯匈 和匯匈 指欺競何 壘��0�� 家��0��
隆堋響頼��紗秘慕禰厮宴和肝写偬堋響��
梁椣戻幣�� 梁心弌傍議揖扮窟燕得胎��傍竃徭失議心隈才凪万弌誌育断蛍�輌臆惨軼僑〃�燕慕得珊辛參資誼持蛍才将刮襲潜��範寔亟圻幹慕得 瓜寡追葎娼得辛參資誼寄楚署衛、持蛍才将刮襲潜填��