ASP.NET MVC 6: просмотр компонентов в отдельной сборке

Я хотел бы определить компоненты представления (которые являются новыми в ASP.NET MVC 6) в отдельной сборке из веб-проекта запуска MVC 6, чтобы я мог повторно использовать их в нескольких веб-проектах. Пример решения может выглядеть следующим образом:

BookStore.Components(содержит компоненты общего вида)BookStore.Web1(ссылки BookStore.Components)BookStore.Web2(ссылки BookStore.Components)

Я создал новую библиотеку классов (пакет) и создал компонент вида внутри. Я также создал представление в соответствии с соглашением о вложенных папках. мойBookStore.Components Проект выглядит так:

Когда я пытаюсь вызвать этот компонент представления из моего веб-проекта:

@Component.Invoke("BookOfTheMonth")

... Я получаю ошибку 500 с пустым телом контента. Кажется, что класс ViewComponent обнаружен, но бритвенное представление для компонента - нет.

Я тоже пытался продлитьDefaultViewComponentDescriptorProvider так что смотреть компоненты изBookStore.Components Сборка может быть обнаружена:

Определил AssemblyProvider
 public class AssemblyProvider : IAssemblyProvider
    {
        public IEnumerable<Assembly> CandidateAssemblies
        {
            get
            {
                yield return typeof(AssemblyProvider).Assembly;
                yield return typeof(BookStore.Components.BookOfTheMonthViewComponent).Assembly;
            }
        }
    }
Зарегистрированный AssemblyProvider с использованием Autofac
builder.RegisterType<AssemblyProvider>()
    .AsImplementedInterfaces();

builder.RegisterType<DefaultViewComponentDescriptorProvider>()
    .AsImplementedInterfaces();

Я не уверен, что регистрацияDefaultViewComponentDescriptorProvider Требуется выше или нет, поэтому я попытался с этим и без него, но я все еще получаю ошибку 500 на странице, где вызывается компонент представления.

Как вызвать компонент представления, который находится в отдельной сборке от веб-проекта MVC6?

Ответы на вопрос(2)

Ваш ответ на вопрос