Apply review suggestions

This commit is contained in:
Lucas A 2020-04-07 12:20:54 +02:00
parent 0e45a4d54e
commit 08308e07e7
1 changed files with 5 additions and 11 deletions

View File

@ -24,12 +24,12 @@ public RulesetStore(IDatabaseContextFactory factory, Storage storage = null)
: base(factory)
{
rulesetStorage = storage?.GetStorageForDirectory("rulesets");
AppDomain.CurrentDomain.AssemblyResolve += resolveRulesetDependencyAssembly;
// On android in release configuration assemblies are loaded from the apk directly into memory.
// We cannot read assemblies from cwd, so should check loaded assemblies instead.
loadFromAppDomain();
loadFromDisk();
AppDomain.CurrentDomain.AssemblyResolve += resolveRulesetDependencyAssembly;
loadUserRulesets();
addMissingRulesets();
}
@ -57,6 +57,7 @@ private Assembly resolveRulesetDependencyAssembly(object sender, ResolveEventArg
{
var asm = new AssemblyName(args.Name);
// the requesting assembly may be located out of the executable's base directory, thus requiring manual resolving of its dependencies.
// this assumes the only explicit dependency of the ruleset is the game core assembly.
// the ruleset dependency on the game core assembly requires manual resolving, transient dependencies should be resolved automatically
if (asm.Name.Equals(typeof(OsuGame).Assembly.GetName().Name, StringComparison.Ordinal))
@ -137,17 +138,10 @@ private void loadFromAppDomain()
private void loadUserRulesets()
{
try
{
var rulesets = rulesetStorage?.GetFiles(".", $"{ruleset_library_prefix}.*.dll");
var rulesets = rulesetStorage?.GetFiles(".", $"{ruleset_library_prefix}.*.dll");
foreach (var ruleset in rulesets.Where(f => !f.Contains("Tests")))
loadRulesetFromFile(rulesetStorage?.GetFullPath(ruleset));
}
catch (Exception e)
{
Logger.Error(e, "Couldn't load user rulesets");
}
foreach (var ruleset in rulesets.Where(f => !f.Contains("Tests")))
loadRulesetFromFile(rulesetStorage?.GetFullPath(ruleset));
}
private void loadFromDisk()