protected override Assembly Load()

in src/Microsoft.OpenApi.CSharpAnnotations.DocumentGeneration/AssemblyLoader/CustomAssemblyLoadContext.cs [37:99]


        protected override Assembly Load(AssemblyName args)
        {
            if (Assemblies.ContainsKey(args.Name))
            {
                return Assemblies[args.Name];
            }

            var separatorIndex = args.Name.IndexOf(",", StringComparison.Ordinal);
            var assemblyName = separatorIndex > 0 ? args.Name.Substring(0, separatorIndex) : args.Name;

            var assembly = TryLoadExistingAssemblyName(args.FullName);

            if (assembly != null)
            {
                Assemblies[args.Name] = assembly;
                return assembly;
            }

            // Try to load assembly using version.
            var version = args.Version;
            if (version != null)
            {
                var assemblyByVersion = TryLoadByVersion(AssemblyPaths, assemblyName, version.Major + "." + version.Minor + "." + version.Build + ".");
                if (assemblyByVersion != null)
                {
                    Assemblies[args.Name] = assemblyByVersion;
                    return assemblyByVersion;
                }

                assemblyByVersion = TryLoadByVersion(AssemblyPaths, assemblyName, version.Major + "." + version.Minor + ".");
                if (assemblyByVersion != null)
                {
                    Assemblies[args.Name] = assemblyByVersion;
                    return assemblyByVersion;
                }

                assemblyByVersion = TryLoadByVersion(AssemblyPaths, assemblyName, version.Major + ".");
                if (assemblyByVersion != null)
                {
                    Assemblies[args.Name] = assemblyByVersion;
                    return assemblyByVersion;
                }
            }

            // Try to load assembly using full name, which includes version too.
            assembly = TryLoadByAssemblyName(args.FullName);
            if (assembly != null)
            {
                Assemblies[args.Name] = assembly;
                return assembly;
            }

            // Try to load assembly using short assembly name.
            assembly = AssemblyLoadUtility.TryLoadByNameOrVersion(AssemblyPaths, assemblyName);
            if (assembly != null)
            {
                Assemblies[args.Name] = assembly;
                return assembly;
            }

            Assemblies[args.Name] = TryLoadByAssemblyName(assemblyName);
            return Assemblies[args.Name];
        }