Использование строго типизированных представлений Razor с моделями представлений, загруженными во время выполнения - PullRequest
0 голосов
/ 07 января 2019

Я хотел бы иметь возможность использовать строго типизированные представления Razor с моделями и контроллерами, загруженными во время выполнения. Сборки загружаются во время запуска приложения в ConfigureServices через IApplicationFeatureProvider.

        services.AddMvc()
           .ConfigureApplicationPartManager(apm => apm.FeatureProviders.Add(new DynamicControllerFeatureProvider()));

Представления с типом модели dynamic будут компилироваться просто отлично, но любые строго типизированные представления Razor не компилируются.

Тип или имя пространства имен «TestModules» не существует в пространство имен 'TestProject' (вам не хватает ссылки на сборку?)

Как я могу заставить движок Razor знать о динамически загружаемых сборках, чтобы я мог использовать строго типизированные представления? Кажется, что использование пользовательского RazorBuildProvider будет работать , но есть ли лучший подход?

1 Ответ

0 голосов
/ 07 января 2019

Представления Razor предварительно компилируются по умолчанию. Поскольку необходимые сборки недоступны до времени выполнения, прекомпиляция невозможна. Вам нужно отключить его с помощью следующего в вашем csproj:

<PropertyGroup>
    <RazorCompileOnBuild>false</RazorCompileOnBuild>
    <RazorCompileOnPublish>false</RazorCompileOnPublish>
</PropertyGroup>
...