public Assembly ResolveAssembly()

in SimpleDUTClientLibrary/AssemblyRedirectResolver.cs [62:94]


        public Assembly ResolveAssembly(string assemblyName, Assembly requestingAssembly)
        {
            // Use latest strong name & version when trying to load SDK assemblies
            var requestedAssembly = new AssemblyName(assemblyName);

            AssemblyRedirect redirectInformation;

            if (!_redirectsDictionary.TryGetValue(requestedAssembly.Name, out redirectInformation))
            {
                return null;
            }

            Trace.WriteLine("Redirecting assembly load of " + assemblyName
                          + ",\tloaded by " + (requestingAssembly == null ? "(unknown)" : requestingAssembly.FullName));

            var alreadyLoadedAssembly = AppDomain.CurrentDomain.GetAssemblies().FirstOrDefault(a =>
            {
                var assm = a.GetName();
                return string.Equals(assm.Name, requestedAssembly.Name, StringComparison.Ordinal)
                    && redirectInformation.TargetVersion.Equals(assm.Version);
            });

            if (alreadyLoadedAssembly != default(Assembly))
            {
                return alreadyLoadedAssembly;
            }

            requestedAssembly.Version = redirectInformation.TargetVersion;
            requestedAssembly.SetPublicKeyToken(new AssemblyName("x, PublicKeyToken=" + redirectInformation.PublicKeyToken).GetPublicKeyToken());
            requestedAssembly.CultureInfo = CultureInfo.InvariantCulture;

            return Assembly.Load(requestedAssembly);
        }