From 09dd987db314a42bce8cbd4901a0397be45384bd Mon Sep 17 00:00:00 2001 From: MrDave1999 Date: Sun, 7 Jun 2026 10:18:42 -0500 Subject: [PATCH] fix(paths): add fallback base directory resolution AppContext.BaseDirectory may not be available in all hosting environments. Introduce PathResolver to provide a consistent base directory resolution strategy by falling back to Directory.GetCurrentDirectory() when AppContext.BaseDirectory is unavailable. --- src/Loader/EnvLoader.HelperMethods.cs | 2 +- src/Loader/PathResolver.cs | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/Loader/PathResolver.cs diff --git a/src/Loader/EnvLoader.HelperMethods.cs b/src/Loader/EnvLoader.HelperMethods.cs index 4589150..3edbe69 100644 --- a/src/Loader/EnvLoader.HelperMethods.cs +++ b/src/Loader/EnvLoader.HelperMethods.cs @@ -72,7 +72,7 @@ private Result GetEnvFilePath(string envFileName) envFileName = Path.GetFileName(envFileName); } else - path = AppContext.BaseDirectory; + path = PathResolver.BaseDirectory; for (var directoryInfo = new DirectoryInfo(path); directoryInfo is not null; diff --git a/src/Loader/PathResolver.cs b/src/Loader/PathResolver.cs new file mode 100644 index 0000000..37b2bb2 --- /dev/null +++ b/src/Loader/PathResolver.cs @@ -0,0 +1,18 @@ +namespace DotEnv.Core; + +internal class PathResolver +{ + public static string BaseDirectory + { + get + { + // AppContext.BaseDirectory may not be available in all hosting + // environments (e.g. SampSharp/open.mp). Fall back to the current + // working directory when necessary. + if (!string.IsNullOrWhiteSpace(AppContext.BaseDirectory)) + return AppContext.BaseDirectory; + + return Directory.GetCurrentDirectory(); + } + } +}