Loading Razor Class Libraries as plugins

前端 未结 1 1363
广开言路
广开言路 2020-12-06 08:05

When using Razor Class Libraries with ASP.net core 2.1, if I add reference to the class library, it loads controllers, and views as expected. But the question is, how can I

相关标签:
1条回答
  • 2020-12-06 08:40

    I had completely forgot about CompiledRazorAssemblyPart.

    What we need to do is:

    services.AddMvc()
    .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
    .ConfigureApplicationPartManager(ConfigureApplicationParts);
    

    and configure the parts like this

        private void ConfigureApplicationParts(ApplicationPartManager apm)
        {
            var rootPath = HostingEnvironment.ContentRootPath;
            var pluginsPath = Path.Combine(rootPath, "Plugins");
    
            var assemblyFiles = Directory.GetFiles(pluginsPath, "*.dll", SearchOption.AllDirectories);
            foreach (var assemblyFile in assemblyFiles)
            {
                try
                {
                    var assembly = Assembly.LoadFile(assemblyFile);
                    if (assemblyFile.EndsWith(".Views.dll"))
                        apm.ApplicationParts.Add(new CompiledRazorAssemblyPart(assembly));
                    else
                        apm.ApplicationParts.Add(new AssemblyPart(assembly));
                }
                catch (Exception e) { }
            }
        }
    
    0 讨论(0)
提交回复
热议问题