Razor 在ASP.NET core 2.1中动态加载程序集时标记帮助程序不工作
我正在使用ASP.NETCore2.1。我从plugins文件夹动态加载所有具有视图的程序集。我使用下面的代码来实现这一点。视图被正确加载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
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文件的前缀相同,这就是为什么官方文档说要创建一个新的应用程序