- saving changes before repo reset.
This commit is contained in:
@@ -274,7 +274,8 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public void Stop()
|
public void Stop()
|
||||||
{
|
{
|
||||||
|
PluginPackageManager.UnloadPlugins();
|
||||||
|
|
||||||
// unregister types
|
// unregister types
|
||||||
foreach (Type type in AssemblyManager.GetAllLoadedACLs().SelectMany(
|
foreach (Type type in AssemblyManager.GetAllLoadedACLs().SelectMany(
|
||||||
acl => acl.AssembliesTypes.Select(kvp => kvp.Value)))
|
acl => acl.AssembliesTypes.Select(kvp => kvp.Value)))
|
||||||
|
|||||||
@@ -337,7 +337,7 @@ public class AssemblyManager
|
|||||||
OpsLockLoaded.EnterReadLock();
|
OpsLockLoaded.EnterReadLock();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (LoadedACLs.IsEmpty)
|
if (!LoadedACLs.Any())
|
||||||
{
|
{
|
||||||
return ImmutableList<LoadedACL>.Empty;
|
return ImmutableList<LoadedACL>.Empty;
|
||||||
}
|
}
|
||||||
@@ -422,7 +422,7 @@ public class AssemblyManager
|
|||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
ModUtils.Logging.PrintError($"{nameof(AssemblyManager)}::{nameof(LoadAssemblyFromMemory)}() | Failed to compile and load assemblies for [ {compiledAssemblyName} / {friendlyName} ]! Details: {e.Message}");
|
ModUtils.Logging.PrintError($"{nameof(AssemblyManager)}::{nameof(LoadAssemblyFromMemory)}() | Failed to compile and load assemblies for [ {compiledAssemblyName} / {friendlyName} ]! Details: {e.Message} | {e.StackTrace}");
|
||||||
return AssemblyLoadingSuccessState.InvalidAssembly;
|
return AssemblyLoadingSuccessState.InvalidAssembly;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+13
-8
@@ -76,24 +76,29 @@ public class MemoryFileAssemblyContextLoader : AssemblyLoadContext
|
|||||||
LoadFromAssemblyPath(sanitizedFilePath);
|
LoadFromAssemblyPath(sanitizedFilePath);
|
||||||
}
|
}
|
||||||
// on fail of any we're done because we assume that loaded files are related. This ACL needs to be unloaded and collected.
|
// on fail of any we're done because we assume that loaded files are related. This ACL needs to be unloaded and collected.
|
||||||
catch (ArgumentNullException)
|
catch (ArgumentNullException ane)
|
||||||
{
|
{
|
||||||
|
ModUtils.Logging.PrintError($"MemFileACL::{nameof(LoadFromFiles)}() | Error loading file path {sanitizedFilePath}. Details: {ane.Message} | {ane.StackTrace}");
|
||||||
return AssemblyLoadingSuccessState.BadFilePath;
|
return AssemblyLoadingSuccessState.BadFilePath;
|
||||||
}
|
}
|
||||||
catch (ArgumentException)
|
catch (ArgumentException ae)
|
||||||
{
|
{
|
||||||
|
ModUtils.Logging.PrintError($"MemFileACL::{nameof(LoadFromFiles)}() | Error loading file path {sanitizedFilePath}. Details: {ae.Message} | {ae.StackTrace}");
|
||||||
return AssemblyLoadingSuccessState.BadFilePath;
|
return AssemblyLoadingSuccessState.BadFilePath;
|
||||||
}
|
}
|
||||||
catch (FileLoadException)
|
catch (FileLoadException fle)
|
||||||
{
|
{
|
||||||
|
ModUtils.Logging.PrintError($"MemFileACL::{nameof(LoadFromFiles)}() | Error loading file path {sanitizedFilePath}. Details: {fle.Message} | {fle.StackTrace}");
|
||||||
return AssemblyLoadingSuccessState.CannotLoadFile;
|
return AssemblyLoadingSuccessState.CannotLoadFile;
|
||||||
}
|
}
|
||||||
catch (FileNotFoundException)
|
catch (FileNotFoundException fnfe)
|
||||||
{
|
{
|
||||||
|
ModUtils.Logging.PrintError($"MemFileACL::{nameof(LoadFromFiles)}() | Error loading file path {sanitizedFilePath}. Details: {fnfe.Message} | {fnfe.StackTrace}");
|
||||||
return AssemblyLoadingSuccessState.NoAssemblyFound;
|
return AssemblyLoadingSuccessState.NoAssemblyFound;
|
||||||
}
|
}
|
||||||
catch (BadImageFormatException)
|
catch (BadImageFormatException bife)
|
||||||
{
|
{
|
||||||
|
ModUtils.Logging.PrintError($"MemFileACL::{nameof(LoadFromFiles)}() | Error loading file path {sanitizedFilePath}. Details: {bife.Message} | {bife.StackTrace}");
|
||||||
return AssemblyLoadingSuccessState.InvalidAssembly;
|
return AssemblyLoadingSuccessState.InvalidAssembly;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -143,7 +148,7 @@ public class MemoryFileAssemblyContextLoader : AssemblyLoadContext
|
|||||||
}
|
}
|
||||||
|
|
||||||
var externAssemblyRefs = externFileAssemblyReferences is not null ? externFileAssemblyReferences.ToImmutableList() : ImmutableList<Assembly>.Empty;
|
var externAssemblyRefs = externFileAssemblyReferences is not null ? externFileAssemblyReferences.ToImmutableList() : ImmutableList<Assembly>.Empty;
|
||||||
var externAssemblyNames = !externAssemblyRefs.IsEmpty ? externAssemblyRefs
|
var externAssemblyNames = externAssemblyRefs.Any() ? externAssemblyRefs
|
||||||
.Where(a => a.FullName is not null)
|
.Where(a => a.FullName is not null)
|
||||||
.Select(a => a.FullName).ToImmutableHashSet()
|
.Select(a => a.FullName).ToImmutableHashSet()
|
||||||
: ImmutableHashSet<string>.Empty;
|
: ImmutableHashSet<string>.Empty;
|
||||||
@@ -179,7 +184,7 @@ public class MemoryFileAssemblyContextLoader : AssemblyLoadContext
|
|||||||
).ToList());
|
).ToList());
|
||||||
|
|
||||||
ImmutableList<AssemblyManager.LoadedACL> loadedAcls = _assemblyManager.GetAllLoadedACLs().ToImmutableList();
|
ImmutableList<AssemblyManager.LoadedACL> loadedAcls = _assemblyManager.GetAllLoadedACLs().ToImmutableList();
|
||||||
if (!loadedAcls.IsEmpty)
|
if (loadedAcls.Any())
|
||||||
{
|
{
|
||||||
// build metadata refs from ACL assemblies from files/disk.
|
// build metadata refs from ACL assemblies from files/disk.
|
||||||
foreach (AssemblyManager.LoadedACL loadedAcl in loadedAcls)
|
foreach (AssemblyManager.LoadedACL loadedAcl in loadedAcls)
|
||||||
@@ -205,7 +210,7 @@ public class MemoryFileAssemblyContextLoader : AssemblyLoadContext
|
|||||||
// build metadata refs from in-memory images
|
// build metadata refs from in-memory images
|
||||||
foreach (var loadedAcl in loadedAcls)
|
foreach (var loadedAcl in loadedAcls)
|
||||||
{
|
{
|
||||||
if (loadedAcl.Acl.CompiledAssemblyImage is null || loadedAcl.Acl.CompiledAssemblyImage.Length == 0)
|
if (loadedAcl?.Acl?.CompiledAssemblyImage is null || loadedAcl.Acl.CompiledAssemblyImage.Length == 0)
|
||||||
continue;
|
continue;
|
||||||
metadataReferences.Add(MetadataReference.CreateFromImage(loadedAcl.Acl.CompiledAssemblyImage));
|
metadataReferences.Add(MetadataReference.CreateFromImage(loadedAcl.Acl.CompiledAssemblyImage));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user