From ad773a947acaf02b472846bc3eefdac2e514a1a7 Mon Sep 17 00:00:00 2001 From: Jesse Plamondon-Willard Date: Fri, 2 Dec 2016 17:15:52 -0500 Subject: fix assembly resolution when mods try to load types from other mods (#166) --- src/StardewModdingAPI/Framework/ModAssemblyLoader.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/StardewModdingAPI/Framework/ModAssemblyLoader.cs') diff --git a/src/StardewModdingAPI/Framework/ModAssemblyLoader.cs b/src/StardewModdingAPI/Framework/ModAssemblyLoader.cs index c5f9ec31..d92a04f3 100644 --- a/src/StardewModdingAPI/Framework/ModAssemblyLoader.cs +++ b/src/StardewModdingAPI/Framework/ModAssemblyLoader.cs @@ -103,10 +103,19 @@ namespace StardewModdingAPI.Framework } /// Resolve an assembly from its name. - /// The short assembly name. - public Assembly ResolveAssembly(string shortName) + /// The assembly name. + /// + /// This implementation returns the first loaded assembly which matches the short form of + /// the assembly name, to resolve assembly resolution issues when rewriting + /// assemblies (especially with Mono). Since this is meant to be called on , + /// the implicit assumption is that loading the exact assembly failed. + /// + public Assembly ResolveAssembly(string name) { - return this.AssemblyMap.Targets.FirstOrDefault(p => p.GetName().Name == shortName); + string shortName = name.Split(new[] { ',' }, 2).First(); // get simple name (without version and culture) + return AppDomain.CurrentDomain + .GetAssemblies() + .FirstOrDefault(p => p.GetName().Name == shortName); } -- cgit