예제 #1
0
        private (AssemblyInformation assembly, AssemblyDefinition?monoAssembly) GetManaged(AssemblyNameReference assemblyDefinition, string baseDirectory, string extension = "dll")
        {
            if (AssembliesLoaded.TryGetValue(assemblyDefinition.Name, out var assemblyFound))
            {
                return(assemblyFound, null);
            }

            var assemblyInfos = CreateManagedAssemblyInformation(assemblyDefinition, baseDirectory, extension);

            AssembliesLoaded.Add(assemblyDefinition.Name, assemblyInfos.assembly);

            return(assemblyInfos);
        }
        private (AssemblyInformation assembly, Assembly?msAssembly) GetManaged(MetadataLoadContext context, AssemblyName assemblyName, string baseDirectory, string extension = "dll")
        {
            if (assemblyName.Name == null)
            {
                throw new ArgumentNullException($"No name for assembly {assemblyName.FullName}");
            }

            if (AssembliesLoaded.TryGetValue(assemblyName.Name, out var assemblyFound))
            {
                return(assemblyFound, null);
            }

            var(assembly, msAssembly) = CreateManagedAssemblyInformation(context, assemblyName, baseDirectory, extension);

            AssembliesLoaded.Add(assemblyName.Name, assembly);

            return(assembly, msAssembly);
        }
 /// <summary>
 /// Raises the <see cref="AssembliesLoaded"/> event if someone is registered.
 /// </summary>
 protected internal void RaiseAssembliesLoaded(IEnumerable <Assembly> assemblies)
 {
     AssembliesLoaded?.Invoke(this, assemblies);
 }