【问题标题】:How CompiledRazorAssemblyPart should be used to load Razor Views?CompiledRazorAssemblyPart 应该如何用于加载 Razor 视图?
【发布时间】:2018-06-23 18:12:45
【问题描述】:

我有一个 Razor 类库,在 ASP.NET Core MVC 项目中用作参考。该应用程序运行良好。我删除了引用并使用CompiledRazorAssemblyPart 将 dll 添加到应用程序部分。这是一个示例代码Loading Razor Class Libraries as plugins

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

【问题讨论】:

  • 我也有同样的问题!正常的 .cshtml (/Views/) 文件运行良好。但是当使用 dll 而不是项目引用时,RazorPages 会给我一个“FileNotFound”异常。

标签: asp.net asp.net-core


【解决方案1】:

我在使用 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));
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-19
    • 2018-07-26
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多