У меня была похожая проблема с использованием CompiledRazorAssemblyPart
, и оказалось, что проблема заключалась в том, что я добавлял свою сборку RCL (например, MyPlugin.dll) как CompiledRazorAssemblyPart
, тогда как вам нужно добавить сборку .Views (например, MyPlugin.Views.dll).Ниже приведен пример кода, который я сейчас использую для добавления сборки плагина, на которую не ссылается основной проект веб-приложения.Обратите внимание, что вы, вероятно, все еще хотите сборку плагина в качестве стандартной части приложения для контроллеров и т. Д.
public static void AddPluginApplicationPart(IMvcBuilder mvcBuilder, Assembly assembly)
{
mvcBuilder.AddApplicationPart(assembly);
Assembly viewsAssembly = null;
try
{
viewsAssembly = Assembly.Load(assembly.GetName().Name + ".Views");
}
catch (FileNotFoundException)
{
}
if (viewsAssembly != null)
{
// Adding this application part allows us to use compiled razor views from this plugin
var viewsApplicationPart = new CompiledRazorAssemblyPart(viewsAssembly);
mvcBuilder.ConfigureApplicationPartManager(manager => manager.ApplicationParts.Add(viewsApplicationPart));
}
}