在带有剃刀视图的ASP.NET Core 2.0项目中,我在运行时加载了一个包含TagHelpers的程序集。
当.dll位于项目的bin文件夹中或将TagHelpers项目作为对项目的依赖项添加时,taghelpers会解析标签。
但是,将程序集加载到bin文件夹外部时,即使程序集成功加载,TagHelpers也无法正常工作。
当从bin外部的文件夹加载程序集时,如何使TagHelpers工作?
public void ConfigureServices(IServiceCollection services)
{
var asm = AssemblyLoadContext.Default.LoadFromAssemblyPath(@"D:\SomeTagHelpers\bin\Debug\netcoreapp2.0\SomeTagHelpers.dll");
var part = new AssemblyPart(asm);
var builder = services.AddMvc();
builder.ConfigureApplicationPartManager(appPartManager => appPartManager.ApplicationParts.Add(part));
builder.AddTagHelpersAsServices();
}
最佳答案
因此,在bin文件夹之外使用引用时,请使用RazorViewEngineOptions的AdditionalCompilationReferences将引用添加到编译中,以便发现和使用标签助手。另外,也不必使用AddTagHelpersAsServices()。
public void ConfigureServices(IServiceCollection services)
{
var asm = AssemblyLoadContext.Default.LoadFromAssemblyPath(@"D:\SomeTagHelpers\bin\Debug\netcoreapp2.0\SomeTagHelpers.dll");
var part = new AssemblyPart(asm);
var builder = services.AddMvc();
builder.ConfigureApplicationPartManager(appPartManager => appPartManager.ApplicationParts.Add(part));
builder.Services.Configure((RazorViewEngineOptions options) =>
{
options.AdditionalCompilationReferences.Add(MetadataReference.CreateFromFile(asm.Location));
});
}
关于c# - 从外部程序集中加载TagHelpers,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48521923/