From a1afbfb169610ffbc1813d83e946c9e2cc0d2d63 Mon Sep 17 00:00:00 2001 From: HetCreep Date: Thu, 11 Jun 2026 16:46:18 +0700 Subject: [PATCH] Skip missing search directories to fix preloader DirectoryNotFoundException (#1331) --- BepInEx.Core/Utility.cs | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/BepInEx.Core/Utility.cs b/BepInEx.Core/Utility.cs index a6b93bd..a346ada 100644 --- a/BepInEx.Core/Utility.cs +++ b/BepInEx.Core/Utility.cs @@ -6,6 +6,7 @@ using System.Reflection; using System.Reflection.Emit; using System.Security.Cryptography; using System.Text; +using BepInEx.Logging; using Mono.Cecil; namespace BepInEx; @@ -416,11 +417,21 @@ public static class Utility { var result = new Dictionary(StringComparer.InvariantCultureIgnoreCase); foreach (var directory in directories) - foreach (var file in Directory.GetFiles(directory, pattern)) { - var fileName = Path.GetFileName(file); - if (!result.ContainsKey(fileName)) - result[fileName] = file; + // A configured search directory (e.g. a missing unstripped_corlib) may not exist; warn and skip it + // instead of letting Directory.GetFiles throw DirectoryNotFoundException. + 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;