Skip missing search directories to fix preloader DirectoryNotFoundException (#1331)

This commit is contained in:
HetCreep authored and GitHub committed 2026-06-11 11:46:18 +02:00
1 parent 9aedb90fc6
commit a1afbfb169
1 file changed
+15 -4
+15 -4
View File
@@ -6,6 +6,7 @@ using System.Reflection;
using System.Reflection.Emit; using System.Reflection.Emit;
using System.Security.Cryptography; using System.Security.Cryptography;
using System.Text; using System.Text;
using BepInEx.Logging;
using Mono.Cecil; using Mono.Cecil;
namespace BepInEx; namespace BepInEx;
@@ -416,11 +417,21 @@ public static class Utility
{ {
var result = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase); var result = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
foreach (var directory in directories) foreach (var directory in directories)
foreach (var file in Directory.GetFiles(directory, pattern))
{ {
var fileName = Path.GetFileName(file); // A configured search directory (e.g. a missing unstripped_corlib) may not exist; warn and skip it
if (!result.ContainsKey(fileName)) // instead of letting Directory.GetFiles throw DirectoryNotFoundException.
result[fileName] = file; if (!Directory.Exists(directory))
{
Logger.Log(LogLevel.Warning, $"Skipping search directory that does not exist: {directory}");
continue;
}
foreach (var file in Directory.GetFiles(directory, pattern))
{
var fileName = Path.GetFileName(file);
if (!result.ContainsKey(fileName))
result[fileName] = file;
}
} }
return result.Values; return result.Values;