- Fixed assembly references not resolving for minor dll signature differences.
- Fixed deadlock during assembly resolution.
This commit is contained in:
@@ -96,9 +96,9 @@ public class PluginManagementService : IAssemblyManagementService
|
|||||||
.Union(AssemblyLoadContext.Default.Assemblies
|
.Union(AssemblyLoadContext.Default.Assemblies
|
||||||
.Where(ass =>
|
.Where(ass =>
|
||||||
!ass.IsDynamic &&
|
!ass.IsDynamic &&
|
||||||
!ass.GetName().FullName.EndsWith("BarotraumaCore") &&
|
!ass.GetName().FullName.StartsWith("BarotraumaCore") &&
|
||||||
!ass.GetName().FullName.EndsWith("Barotrauma") &&
|
!ass.GetName().FullName.StartsWith("Barotrauma") &&
|
||||||
!ass.GetName().FullName.EndsWith("DedicatedServer"))
|
!ass.GetName().FullName.StartsWith("DedicatedServer"))
|
||||||
.Select(MetadataReference (ass) => MetadataReference.CreateFromFile(ass.Location)))
|
.Select(MetadataReference (ass) => MetadataReference.CreateFromFile(ass.Location)))
|
||||||
.Where(ar => ar is not null)
|
.Where(ar => ar is not null)
|
||||||
.ToImmutableArray();
|
.ToImmutableArray();
|
||||||
@@ -630,7 +630,8 @@ public class PluginManagementService : IAssemblyManagementService
|
|||||||
|
|
||||||
private Assembly OnAssemblyLoaderResolvingManaged(IAssemblyLoaderService requestingLoader, AssemblyName searchName)
|
private Assembly OnAssemblyLoaderResolvingManaged(IAssemblyLoaderService requestingLoader, AssemblyName searchName)
|
||||||
{
|
{
|
||||||
using var lck = _operationsLock.AcquireReaderLock().ConfigureAwait(false).GetAwaiter().GetResult();
|
// This method is used during assembly instantiation, we cannot put a lock here.
|
||||||
|
//using var lck = _operationsLock.AcquireReaderLock().ConfigureAwait(false).GetAwaiter().GetResult();
|
||||||
IService.CheckDisposed(this);
|
IService.CheckDisposed(this);
|
||||||
|
|
||||||
foreach (var loader in _assemblyLoaders.Where(kvp => kvp.Value != requestingLoader)
|
foreach (var loader in _assemblyLoaders.Where(kvp => kvp.Value != requestingLoader)
|
||||||
@@ -643,7 +644,7 @@ public class PluginManagementService : IAssemblyManagementService
|
|||||||
|
|
||||||
foreach (var assembly in loader.Assemblies)
|
foreach (var assembly in loader.Assemblies)
|
||||||
{
|
{
|
||||||
if (assembly.GetName().Equals(searchName))
|
if (assembly.GetName().FullName == searchName.FullName)
|
||||||
{
|
{
|
||||||
return assembly;
|
return assembly;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user