Skip to content

Commit 08841a3

Browse files
committed
插件目录式加载 native dll bug修复
1 parent 9ca151f commit 08841a3

1 file changed

Lines changed: 21 additions & 5 deletions

File tree

src/Riven.Modular/Modular/PlugIns/FolderPlugInSource.cs

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using JetBrains.Annotations;
2+
23
using System;
34
using System.Collections.Generic;
45
using System.IO;
@@ -33,7 +34,8 @@ public Type[] GetModules()
3334
{
3435
var modules = new List<Type>();
3536

36-
foreach (var assembly in GetAssemblies())
37+
var assemblies = GetAssemblies();
38+
foreach (var assembly in assemblies)
3739
{
3840
try
3941
{
@@ -54,16 +56,30 @@ public Type[] GetModules()
5456
return modules.ToArray();
5557
}
5658

57-
protected virtual IEnumerable<Assembly> GetAssemblies()
59+
protected virtual List<Assembly> GetAssemblies()
5860
{
59-
var assemblyFiles = this.GetAssemblyFiles(Folder, SearchOption);
61+
var assemblies = new List<Assembly>();
62+
63+
var assemblyFilePaths = this.GetAssemblyFiles(Folder, SearchOption).ToList();
6064

6165
if (Filter != null)
6266
{
63-
assemblyFiles = assemblyFiles.Where(Filter);
67+
assemblyFilePaths = (List<string>)assemblyFilePaths.Where(Filter);
68+
}
69+
70+
foreach (var assemblyFile in assemblyFilePaths)
71+
{
72+
73+
try
74+
{
75+
assemblies.Add(AssemblyLoadContext.Default.LoadFromAssemblyPath(assemblyFile));
76+
}
77+
catch
78+
{
79+
}
6480
}
6581

66-
return assemblyFiles.Select(AssemblyLoadContext.Default.LoadFromAssemblyPath);
82+
return assemblies;
6783
}
6884

6985
protected virtual IEnumerable<string> GetAssemblyFiles(string folderPath, SearchOption searchOption)

0 commit comments

Comments
 (0)