Assemblies
Application with two versions of an assembly.
  - Application's components: 
    
      - theApp.dll - an assembly 
        
          - value of AssemblyTitle attribute set to "theAppTitle"
 
          - version numbers set to: 
            
              - 1.0 for the theApp.dll file residing in application's directory
 
              - 2.0 for the theApp.dll file in Global Assembly Cache (GAC)
 
            
           
          - non-static method GetHello()       
              returning text:
            "Hello from <AssemblyTitle> <AssemblyVersion>" 
            (<Assembly...> means the value of specified attribute) 
        
       
      - theApp.exe - application for Windows 
        
          - menu: 
            
              - "Version 1.0" - calls GetHello() from 1.0 version of the assembly 
                and displays returned value
  
              - "Version 2.0" - as above, for 2.0 version of the assembly
 
            
           
        
       
    
   
  - Create an installer named theApp.msi, which installs the following elements:
    
      - theApp.exe into application's directory
 
      - 1.0 version of theApp.dll into application's directory
 
      - 2.0 version of theApp.dll into Global Assembly Cache (GAC)
 
      - shortcut to file theApp.exe placed on the desktop
 
    
   
  - Important requirements: 
    
      - versions 1.0 and 2.0 of theApp.dll should differ only in value of 
        AssemblyVersion attribute
 
      - the application should dynamically check if version 2.0 of theApp.dll is 
        installed in GAC; if not, it should display a message box