Simple names like
calc can lead to some ambiguity when assemblies are shared across different applications. This is precisely what has been a critical issue in times of the DLL hell, where components were overwritten by newer versions. For example, suppose that
SimpleCalc is an application that relies on calc.dll version 1.0, which is registered so that it can be shared across programs. Later,
SuperCalc comes around with version 2.0 of the calc.dll library, which it also registers centrally. At this point, the later version wins and overwrites the older one. Now things may go bad for
SimpleCalc if the new version is not (fully) backward compatible with the older one.
Strong naming was invented to resolve this issue. By making a ...