diff --git a/src/Microsoft.CodeAnalysis.Razor.Workspaces/DefaultTagHelperResolver.cs b/src/Microsoft.CodeAnalysis.Razor.Workspaces/DefaultTagHelperResolver.cs index cdbe927613..e9096e0410 100644 --- a/src/Microsoft.CodeAnalysis.Razor.Workspaces/DefaultTagHelperResolver.cs +++ b/src/Microsoft.CodeAnalysis.Razor.Workspaces/DefaultTagHelperResolver.cs @@ -21,6 +21,7 @@ namespace Microsoft.CodeAnalysis.Razor var descriptors = new List(); VisitTagHelpers(compilation, assemblyNameFilters, descriptors); + VisitViewComponents(compilation, assemblyNameFilters, descriptors); var diagnostics = new List(); var resolutionResult = new TagHelperResolutionResult(descriptors, diagnostics); @@ -51,6 +52,25 @@ namespace Microsoft.CodeAnalysis.Razor } } + private void VisitViewComponents(Compilation compilation, IEnumerable assemblyNameFilters, List results) + { + var types = new List(); + var visitor = ViewComponentTypeVisitor.Create(compilation, types); + + VisitCompilation(visitor, compilation); + + var factory = new ViewComponentTagHelperDescriptorFactory(compilation); + foreach (var type in types) + { + if (assemblyNameFilters.Contains(type.ContainingAssembly.Identity.Name)) + { + var descriptor = factory.CreateDescriptor(type); + + results.Add(descriptor); + } + } + } + private static void VisitCompilation(SymbolVisitor visitor, Compilation compilation) { visitor.Visit(compilation.Assembly.GlobalNamespace);