Question 1 :
How can you debug failed assembly binds?
Use the Assembly Binding Log Viewer (fuslogvw.exe) to find out the paths searched.
Question 2 :
Where are shared assemblies stored?
Global assembly cache.
Question 3 :
How can you create a strong name for a .NET assembly?
With the help of Strong Name tool (sn.exe).
Question 4 :
Where's global assembly cache located on the system?
Usually C:\winnt\assembly or C:\windows\assembly.
Question 5 :
Can you have two files with the same file name in GAC?
Yes, remember that GAC is a very special folder, and while normally you would not be able to place two files with the same name into a Windows folder, GAC differentiates by version number as well, so it's possible for MyApp.dll and MyApp.dll to co-exist in GAC if the first one is version 184.108.40.206 and the second one is 220.127.116.11.
So let's say I have an application that uses MyApp.dll assembly, version 18.104.22.168. There is a security bug in that assembly, and I publish the patch, issuing it under name MyApp.dll 22.214.171.124. How do I tell the client applications that are already installed to start using this new MyApp.dll?
Use publisher policy. To configure a publisher policy, use the publisher policy configuration file, which uses a format similar app .config file. But unlike the app .config file, a publisher policy file needs to be compiled into an assembly and placed in the GAC.