| 
             Public
              Assembly 
           | 
          
             Private
              Assembly 
           | 
        
        
          | Public
            assembly can be used by multiple applications. | 
          Private
            assembly can be used by only one application. | 
        
        
          | Public
            assembly is stored in GAC (Global Assembly Cache). | 
          Private
            assembly will be stored in the specific application's directory or
            sub-directory. | 
        
        
          | Public
            assembly is also termed as shared assembly. | 
          There
            is no other name for private assembly. | 
        
        
          | Strong
            name has to be created for public assembly. | 
          Strong
            name is not required for private assembly. | 
        
        
          | Public
            assembly should strictly enforce version constraint. | 
          Private
            assembly doesn't have any version constraint.  | 
        
        
          | An example
            to public assembly is the actuate report classes which can be imported
            in the library and used by any application that prefers to implement
            actuate reports.  | 
          By default,
            all assemblies you create are examples of private assembly. Only when
            you associate a strong name to it and store it in GAC, it becomes
            a public assembly. |