GAC solves the problem of how DOTNET Assembly shares Assembly. For example, DOTNET framework must be deployed to GAC. Note: DOTNET Assembly locate rule first looks for GAC, and then finds the directory tree where the current app is located (CLR will firstly search in GAC for assembly loading and then get into app specific directory/path tree ). Therefore, for a public assembly, there is only one path: Put in GAC.
Sidebyside assemblyThe solution is the DOTNET assembly version conflict. The two aspects of work are implemented through OS as media: on the one hand, those sidebyside assemblies, such as donet framework assemblies, MFC, ATL, and CRT DLLs require a manifest file to describe them to the OS by themselves; on the other hand, the app that uses them requires a manifest file to tell the OS which version of Assembly he wants to use. When the app starts running, the OS will be able to know which version of assembly the app needs and where to find it. (DLL hellDesignates a group of problems that arise from the useDynamic-Link LibrariesIn Microsoft Windows.Problems include version conflicts, missing DLLs, duplicate DLLs, and incorrect or missing registration. In sxs, Windows stores multiple versions of a DLL in the winsxs subdirectory of the Windows directory, and loads them on demand. This variable CES dependency problems for applications that include an sxs manifest.)