diff --git a/src/Persistence/PersistenceTests/PersistenceTests.csproj b/src/Persistence/PersistenceTests/PersistenceTests.csproj index cced4a65a..68af960ce 100644 --- a/src/Persistence/PersistenceTests/PersistenceTests.csproj +++ b/src/Persistence/PersistenceTests/PersistenceTests.csproj @@ -2,6 +2,7 @@ false + net8.0;net9.0 @@ -39,6 +40,11 @@ + + + + + diff --git a/src/Wolverine/ExtensionLoader.cs b/src/Wolverine/ExtensionLoader.cs index a289a08a6..0cf2d553f 100644 --- a/src/Wolverine/ExtensionLoader.cs +++ b/src/Wolverine/ExtensionLoader.cs @@ -9,6 +9,25 @@ namespace Wolverine; internal static class ExtensionLoader { private static Assembly[]? _extensions; + private static bool hasWarned = false; + + internal static bool IsModule(Assembly assembly) + { + try + { + if (assembly.HasAttribute()) return true; + } + catch (Exception) + { + if (!hasWarned) + { + Console.WriteLine("To disable automatic Wolverine extension finding, and stop these messages, see:"); + Console.WriteLine("https://wolverinefx.net/guide/extensions.html#disabling-assembly-scanning"); + } + } + + return false; + } internal static Assembly[] FindExtensionAssemblies() { @@ -17,8 +36,19 @@ internal static Assembly[] FindExtensionAssemblies() return _extensions; } + Action logFailure = msg => + { + if (!hasWarned) + { + Console.WriteLine("To disable automatic Wolverine extension finding, and stop these messages, see:"); + Console.WriteLine("https://wolverinefx.net/guide/extensions.html#disabling-assembly-scanning"); + } + + Console.WriteLine(msg); + }; + _extensions = AssemblyFinder - .FindAssemblies(msg => Console.WriteLine(msg), a => a.HasAttribute(), false) + .FindAssemblies(logFailure, a => a.HasAttribute(), false) .Concat(AppDomain.CurrentDomain.GetAssemblies()) .Distinct() .Where(a => a.HasAttribute())