gpt4 book ai didi

c# - 从外部程序集加载 TagHelper

转载 作者:行者123 更新时间:2023-11-30 18:15:23 24 4
gpt4 key购买 nike

在带有 Razor View 的 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# - 从外部程序集加载 TagHelper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48521923/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com