应如何使用 CompiledRazorAssemblyPart 加载 Razor 视图?

won*_*rld 2 asp.net asp.net-core

我有一个 Razor 类库,它在 ASP.NET Core MVC 项目中用作参考。该应用程序运行良好。我删除了引用并用于CompiledRazorAssemblyPart将 dll 添加到应用程序部分。这是将Razor 类库作为插件加载的示例代码

当我使用 RCL 作为参考时,相同的路线将不再有效。我应该使用任何其他设置来加载视图吗?

小智 5

我在使用时遇到了类似的问题,CompiledRazorAssemblyPart结果证明问题是我将 RCL 程序集(例如 MyPlugin.dll)CompiledRazorAssemblyPart添加为 .Views 程序集(例如 MyPlugin.Views.dll)。下面是我现在用来添加未被主 Web 应用程序项目引用的插件程序集的代码示例。请注意,您可能仍然希望插件程序集作为控制器等的标准应用程序部件。

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));
            }
        }
Run Code Online (Sandbox Code Playgroud)