deprecate entry DLL with case-insensitive match
This commit is contained in:
parent
90c5858cf8
commit
e3a0bd7e29
|
@ -17,6 +17,7 @@
|
|||
* Fixed 'unknown mod' deprecation warnings showing the wrong stack trace.
|
||||
* Fixed `e.Cursor` in input events showing wrong grab tile when player using a controller moves without moving the viewpoint.
|
||||
* Fixed incorrect 'bypassed safety checks' warning for mods using the new `Specialised.LoadStageChanged` event in 2.10.
|
||||
* Deprecated `EntryDll` values whose capitalisation don't match the actual file. (This works on Windows, but causes errors for Linux/Mac players.)
|
||||
|
||||
## 2.10.1
|
||||
Released 30 December 2018 for Stardew Valley 1.3.32.
|
||||
|
|
|
@ -137,12 +137,23 @@ namespace StardewModdingAPI.Framework.ModLoading
|
|||
}
|
||||
|
||||
// invalid path
|
||||
string assemblyPath = Path.Combine(mod.DirectoryPath, mod.Manifest.EntryDll);
|
||||
if (!File.Exists(assemblyPath))
|
||||
if (!File.Exists(Path.Combine(mod.DirectoryPath, mod.Manifest.EntryDll)))
|
||||
{
|
||||
mod.SetStatus(ModMetadataStatus.Failed, $"its DLL '{mod.Manifest.EntryDll}' doesn't exist.");
|
||||
continue;
|
||||
}
|
||||
|
||||
// invalid capitalisation
|
||||
string actualFilename = new DirectoryInfo(mod.DirectoryPath).GetFiles(mod.Manifest.EntryDll).FirstOrDefault()?.Name;
|
||||
if (actualFilename != mod.Manifest.EntryDll)
|
||||
{
|
||||
#if SMAPI_3_0_STRICT
|
||||
mod.SetStatus(ModMetadataStatus.Failed, $"its {nameof(IManifest.EntryDll)} value '{mod.Manifest.EntryDll}' doesn't match the actual file capitalisation '{actualFilename}'. The capitalisation must match for crossplatform compatibility.");
|
||||
continue;
|
||||
#else
|
||||
SCore.DeprecationManager.Warn(mod.DisplayName, $"{nameof(IManifest.EntryDll)} value with case-insensitive capitalisation", "2.11", DeprecationLevel.Info);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
// validate content pack
|
||||
|
|
Loading…
Reference in New Issue