Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit da2bb40

Browse files
committed
Look for an assembly that's already loaded before trying to load it from a file.
This fixes problems when trying to import pre-loaded assemblies that are embedded as resources.
1 parent 39fee54 commit da2bb40

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/runtime/assemblymanager.cs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,19 @@ public static Assembly LoadAssemblyPath(string name) {
208208
return assembly;
209209
}
210210

211+
//===================================================================
212+
// Returns an assembly that's already been loaded
213+
//===================================================================
214+
215+
public static Assembly FindLoadedAssembly(string name) {
216+
for (int i = 0; i < assemblies.Count; i++) {
217+
Assembly a = (Assembly)assemblies[i];
218+
if (a.GetName().Name == name) {
219+
return a;
220+
}
221+
}
222+
return null;
223+
}
211224

212225
//===================================================================
213226
// Given a qualified name of the form A.B.C.D, attempt to load
@@ -233,7 +246,10 @@ public static bool LoadImplicit(string name, bool warn=true) {
233246
if (assemblies == null) {
234247
assemblies = new HashSet<Assembly>(AppDomain.CurrentDomain.GetAssemblies());
235248
}
236-
Assembly a = LoadAssemblyPath(s);
249+
Assembly a = FindLoadedAssembly(s);
250+
if (a == null) {
251+
a = LoadAssemblyPath(s);
252+
}
237253
if (a == null) {
238254
a = LoadAssembly(s);
239255
}

src/runtime/moduleobject.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,11 @@ public static Assembly AddReference(string name)
385385
{
386386
AssemblyManager.UpdatePath();
387387
Assembly assembly = null;
388-
assembly = AssemblyManager.LoadAssemblyPath(name);
388+
assembly = AssemblyManager.FindLoadedAssembly(name);
389+
if (assembly == null)
390+
{
391+
assembly = AssemblyManager.LoadAssemblyPath(name);
392+
}
389393
if (assembly == null)
390394
{
391395
assembly = AssemblyManager.LoadAssembly(name);

0 commit comments

Comments
 (0)