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())