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); }