在带有剃刀视图的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# - 从外部程序集中加载Ta​​gHelpers,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48521923/

10-09 18:54