|
@@ -172,13 +172,16 @@ namespace BepInEx.Bootstrap
|
|
|
var dependencies = BepInDependency.FromCecilType(type);
|
|
|
var incompatibilities = BepInIncompatibility.FromCecilType(type);
|
|
|
|
|
|
+ var bepinVersion = type.Module.AssemblyReferences.FirstOrDefault(reference => reference.Name == "BepInEx")?.Version ?? new Version();
|
|
|
+
|
|
|
return new PluginInfo
|
|
|
{
|
|
|
Metadata = metadata,
|
|
|
Processes = filters,
|
|
|
Dependencies = dependencies,
|
|
|
Incompatibilities = incompatibilities,
|
|
|
- TypeName = type.FullName
|
|
|
+ TypeName = type.FullName,
|
|
|
+ TargettedBepInExVersion = bepinVersion
|
|
|
};
|
|
|
}
|
|
|
|
|
@@ -195,6 +198,16 @@ namespace BepInEx.Bootstrap
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ private static bool PluginTargetsWrongBepin(PluginInfo pluginInfo)
|
|
|
+ {
|
|
|
+ var pluginTarget = pluginInfo.TargettedBepInExVersion;
|
|
|
+ // X.X.X.x - compare normally. x.x.x.X - nightly build number, ignore
|
|
|
+ if (pluginTarget.Major != CurrentAssemblyVersion.Major) return true;
|
|
|
+ if (pluginTarget.Minor > CurrentAssemblyVersion.Minor) return true;
|
|
|
+ if (pluginTarget.Minor < CurrentAssemblyVersion.Minor) return false;
|
|
|
+ return pluginTarget.Build > CurrentAssemblyVersion.Build;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// The entrypoint for the BepInEx plugin system.
|
|
|
/// </summary>
|
|
@@ -276,6 +289,12 @@ namespace BepInEx.Bootstrap
|
|
|
DependencyErrors.Add(message);
|
|
|
Logger.LogError(message);
|
|
|
}
|
|
|
+ else if (PluginTargetsWrongBepin(pluginInfo))
|
|
|
+ {
|
|
|
+ string message = $@"Plugin [{pluginInfo.Metadata.Name}] targets a wrong version of BepInEx ({pluginInfo.TargettedBepInExVersion}) and might not work until you update";
|
|
|
+ DependencyErrors.Add(message);
|
|
|
+ Logger.LogWarning(message);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
var emptyDependencies = new string[0];
|