diff --git a/src/Carter/CarterExtensions.cs b/src/Carter/CarterExtensions.cs index 5df7cdc..3a24119 100644 --- a/src/Carter/CarterExtensions.cs +++ b/src/Carter/CarterExtensions.cs @@ -281,7 +281,9 @@ private static IEnumerable GetValidators(CarterConfigurator carterConfigur { validators = assemblies.SelectMany(ass => ass.GetTypes()) .Where(typeof(IValidator).IsAssignableFrom) - .Where(t => !t.GetTypeInfo().IsAbstract); + .Where(t => + !t.GetTypeInfo().IsAbstract && + !t.ContainsGenericParameters); // skip open generic validators carterConfigurator.ValidatorTypes.AddRange(validators); } diff --git a/src/Carter/DependencyContextAssemblyCatalog.cs b/src/Carter/DependencyContextAssemblyCatalog.cs index 300ae56..eee004b 100644 --- a/src/Carter/DependencyContextAssemblyCatalog.cs +++ b/src/Carter/DependencyContextAssemblyCatalog.cs @@ -67,17 +67,29 @@ public virtual IReadOnlyCollection GetAssemblies() { results.Add(overriddenAssembly); } + + return results; + } + + // DependencyContext is unavailable in single-file published apps. + // In that case, return the assemblies already loaded into the AppDomain. + if (this.dependencyContext is null) + { + foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies()) + { + results.Add(assembly); + } + + return results; } - else + + foreach (var library in this.dependencyContext.RuntimeLibraries) { - foreach (var library in this.dependencyContext.RuntimeLibraries) + if (IsReferencingCarter(library) || IsReferencingFluentValidation(library)) { - if (IsReferencingCarter(library) || IsReferencingFluentValidation(library)) + foreach (var assemblyName in library.GetDefaultAssemblyNames(this.dependencyContext)) { - foreach (var assemblyName in library.GetDefaultAssemblyNames(this.dependencyContext)) - { - results.Add(SafeLoadAssembly(assemblyName)); - } + results.Add(SafeLoadAssembly(assemblyName)); } } }