Private and Share Assembly
The terms 'private' and 'shared' refer to how an assembly is deployed and not any intrinsic attributes of the assembly. A private assembly is normally used by a single application, and is stored in the application's directory, or a sub-directory beneath. A shared assembly is intended to be used by multiple applications, and is normally stored in the Global Assembly Cache (GAC), which is a central repository for assemblies. A Strong name has to be created for public assembly while strong name is not required for private assembly. Moreover, private assembly doesn't have any version constraint on the other hand public assembly should strictly enforce version constraint.
What is .Net Framework Assembly
Microsoft .Net Assembly is a logical unit of code, that contains code which the Common Language Runtime (CLR) executes. It is the smallest unit of deployment of a .net application and it can be a .dll or an exe . It include both executable application files that you can run directly from Windows without the need for any other programs (.exe files), and libraries (.dll files) for use by other applications.
More on.... .Net Framework Assembly