public string Resolve(string shortName)
        {
            // Look in the GAC for commonly known .net frx assemblies
            // Note: We trim processor architecture to make things easier.
            // see http://msdn.microsoft.com/en-us/library/k8xx4k69.aspx:
            // "Processor architecture is not required for strong names."
            var lookup = _cacheManager.Get("---", ctx =>
                                           GetGacListForDotNet40()
                                           .Split(new[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries)
                                           .Select(s => s.Trim())
                                           .Select(s => TrimProcessorArchitecture(s))
                                           .Where(s => !string.IsNullOrWhiteSpace(s))
                                           .Distinct(StringComparer.OrdinalIgnoreCase)
                                           .ToDictionary(s => AssemblyLoaderExtensions.ExtractAssemblyShortName(s), StringComparer.OrdinalIgnoreCase));

            string fullName;

            if (lookup.TryGetValue(shortName, out fullName))
            {
                return(fullName);
            }

            return(null);
        }