private static void LoadAssemblies(ILogger log, AssemblyContainer assemblyContainer, List <ReloadedAssembly> loadedAssemblies, bool newVersion, bool firstTime) { foreach (var loadedAssembly in loadedAssemblies) { loadedAssembly.PackageLoadedAssembly.Path = newVersion ? loadedAssembly.NewAssemblyPath : loadedAssembly.OldAssemblyPath; Assembly assembly = null; try { // If first time, load assembly if (firstTime) { loadedAssembly.NewAssembly = assemblyContainer.LoadAssemblyFromPath(loadedAssembly.PackageLoadedAssembly.Path); } // Load assembly assembly = newVersion ? loadedAssembly.NewAssembly : loadedAssembly.OriginalAssembly; log?.Info($"Loading assembly {assembly}"); loadedAssembly.PackageLoadedAssembly.Assembly = assembly; // Unregisters assemblies that have been registered in Package.Load => Package.LoadAssemblyReferencesForPackage AssemblyRegistry.Register(assembly, AssemblyCommonCategories.Assets); DataSerializerFactory.RegisterSerializationAssembly(assembly); } catch (Exception e) { log?.Error($"Error loading assembly {assembly?.ToString() ?? Path.GetFileNameWithoutExtension(loadedAssembly.PackageLoadedAssembly.Path)}: ", e); } } }
/// <inheritdoc/> public DebugAssembly AssemblyLoad(string assemblyPath) { try { var assembly = assemblyContainer.LoadAssemblyFromPath(assemblyPath); if (assembly == null) { Log.Error($"Unexpected error while loading assembly reference [{assemblyPath}] in project [{projectName}]"); return(DebugAssembly.Empty); } return(CreateDebugAssembly(assembly)); } catch (Exception ex) { Log.Error($"Unexpected error while loading assembly reference [{assemblyPath}] in project [{projectName}]", ex); return(DebugAssembly.Empty); } }