move assembly resolver setup into Constants to centralize hardcoded logic
This commit is contained in:
parent
5e16ed0eea
commit
885808fb66
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Mono.Cecil;
|
||||
using StardewModdingAPI.Enums;
|
||||
using StardewModdingAPI.Framework;
|
||||
using StardewModdingAPI.Framework.ModLoading;
|
||||
|
@ -229,6 +230,21 @@ namespace StardewModdingAPI
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>Configure the Mono.Cecil assembly resolver.</summary>
|
||||
/// <param name="resolver">The assembly resolver.</param>
|
||||
internal static void ConfigureAssemblyResolver(AssemblyDefinitionResolver resolver)
|
||||
{
|
||||
// add search paths
|
||||
resolver.AddSearchDirectory(Constants.ExecutionPath);
|
||||
resolver.AddSearchDirectory(Constants.InternalFilesPath);
|
||||
|
||||
// add SMAPI explicitly
|
||||
// Normally this would be handled automatically by the search paths, but for some reason there's a specific
|
||||
// case involving unofficial 64-bit Stardew Valley when launched through Steam (for some players only)
|
||||
// where Mono.Cecil can't resolve references to SMAPI.
|
||||
resolver.Add(AssemblyDefinition.ReadAssembly(typeof(SGame).Assembly.Location));
|
||||
}
|
||||
|
||||
/// <summary>Get metadata for mapping assemblies to the current platform.</summary>
|
||||
/// <param name="targetPlatform">The target game platform.</param>
|
||||
/// <param name="framework">The game framework running the game.</param>
|
||||
|
|
|
@ -59,9 +59,7 @@ namespace StardewModdingAPI.Framework.ModLoading
|
|||
|
||||
// init resolver
|
||||
this.AssemblyDefinitionResolver = this.TrackForDisposal(new AssemblyDefinitionResolver());
|
||||
this.AssemblyDefinitionResolver.AddSearchDirectory(Constants.ExecutionPath);
|
||||
this.AssemblyDefinitionResolver.AddSearchDirectory(Constants.InternalFilesPath);
|
||||
this.AssemblyDefinitionResolver.Add(AssemblyDefinition.ReadAssembly(typeof(SGame).Assembly.Location)); // for some reason Mono.Cecil can't resolve SMAPI in very specific cases involving unofficial 64-bit Stardew Valley when launched through Steam (for some players only)
|
||||
Constants.ConfigureAssemblyResolver(this.AssemblyDefinitionResolver);
|
||||
|
||||
// generate type => assembly lookup for types which should be rewritten
|
||||
this.TypeAssemblies = new Dictionary<string, Assembly>();
|
||||
|
|
Loading…
Reference in New Issue