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