Razor 在ASP.NET core 2.1中动态加载程序集时标记帮助程序不工作

Razor 在ASP.NET core 2.1中动态加载程序集时标记帮助程序不工作,razor,asp.net-core,razorengine,Razor,Asp.net Core,Razorengine,我正在使用ASP.NETCore2.1。我从plugins文件夹动态加载所有具有视图的程序集。我使用下面的代码来实现这一点。视图被正确加载 services.AddMvc(). AddRazorPagesOptions(o => o.AllowAreas = true). SetCompatibilityVersion(CompatibilityVersion.Version_2_1). ConfigureApplicationPartManager(Configu

我正在使用ASP.NETCore2.1。我从plugins文件夹动态加载所有具有视图的程序集。我使用下面的代码来实现这一点。视图被正确加载

services.AddMvc().
    AddRazorPagesOptions(o => o.AllowAreas = true).
    SetCompatibilityVersion(CompatibilityVersion.Version_2_1).
    ConfigureApplicationPartManager(ConfigureApplicationParts);

private void ConfigureApplicationParts(ApplicationPartManager apm)
{
    var pluginsPath = Path.Combine(_env.WebRootPath, "Plugins");

    var assemblyFiles = Directory.GetFiles(pluginsPath, "*.dll", SearchOption.AllDirectories);

    foreach (var assemblyFile in assemblyFiles)
    {
        var assembly = Assembly.LoadFile(assemblyFile);

        if (assemblyFile.EndsWith(".Views.dll"))
        {
            apm.ApplicationParts.Add(new CompiledRazorAssemblyPart(assembly));
        }
        else
        {
            apm.ApplicationParts.Add(new AssemblyPart(assembly));
        }
    }
}
视图中有一些自定义标记帮助器

\u ViewImports.cshtml文件如下所示

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, MyTagHelpers
问题是自定义标记帮助程序未加载,并出现错误:

错误:无法加载文件或程序集MyTagHelpers

我得到错误的原因可能是Razor视图引擎可能正在主应用程序的bin文件夹中查找DLL,但它找不到DLL,并给出了此错误

在启动时,我应该怎么说标记帮助程序在DLL中可用并且可以从那里加载?我应该用它吗


更新:我将标记帮助程序移动到一个名为MyTagHelpers.Common的单独DLL中,并将其放在plugins文件夹中。我不再收到任何程序集未找到错误,但标记帮助程序不工作。

尝试解决此问题2天后-请注意,“程序集名称”是已编译(已组装?).DLL名称,通常与项目名称匹配,可能与命名空间名称/前缀不匹配

因此,如果您的项目名称与我的名称空间不同,那么@addTagHelper引用就是用于创建已编译的.DLL的项目名称-请查看生成输出以进行检查

因此,这通常与.csproj文件的前缀相同,这就是为什么官方文档说要创建一个新的应用程序