2

我正在开发一个需要从其他项目填充页面的 Web 应用程序。我希望为此使用 Razor 类库 (RCL)。该文档指出,RCL 只能作为项目引用或 nuget 包进行引用。我希望这只是确保开发人员采用推荐方式的捷径。不幸的是,如果我直接从我的 RCL 项目 (MyProject.dllMyProject.Views.dll) 中引用两个生成的程序集,它就不起作用。仅当我将项目引用添加到 RCL 项目时,它才有效。

我工作的公司有一个自定义构建管道,由于我无法控制的原因,我只能直接引用程序集。

在使用直接引用和项目引用时,我花了一些时间比较编译的输出,但我找不到区别。有人知道为什么直接引用对 RCL 不起作用吗?如果我了解区别是什么,我应该能够从那里开始工作。

作为奖励,有人知道解决方法吗?创建CompiledRazorAssemblyPart作品(如Loading Razor Class Libraries as plugins中所述),但我宁愿不必手动搜索程序集。

4

1 回答 1

1

将以下代码放在 Startup.cs

var assemblies = new string[] { "APP.Plugins.Test" };

        services
           .AddMvc()
           .ConfigureApplicationPartManager(apm =>
           {

               foreach (var assemblyFile in assemblies)
               {

                   //main assembly
                   var assembly = Assembly.Load(assemblyFile);
                   apm.ApplicationParts.Add(new AssemblyPart(assembly));

                   //view assembly
                   var assemblyView = Assembly.Load(assemblyFile+".Views");
                   apm.ApplicationParts.Add(new CompiledRazorAssemblyPart(assemblyView));                     
               }
           });
于 2019-12-08T13:33:15.673 回答