the main difference is dll is pleased in same project folder in private assembly but in shared assembly dll placed in GAC (global assembly catche ) so faster accessing private assembly and also memory occupied is more , so single application better to use private .shared assembly slower compare to private ,but memory occupied is low.