gpt4 book ai didi

c# - 在 ASP.NET 5 中动态加载程序集

转载 作者:太空狗 更新时间:2023-10-29 22:30:44 24 4
gpt4 key购买 nike

我曾经有一些代码扫描我的应用程序的 bin 目录以查找尚未加载到 AppDomain 中的程序集并加载它们。它基本上看起来像:

foreach (var assemblyPath in Directory.GetFiles("path\to\bin", "*.dll"))
{
var inspected = Assembly.ReflectionOnlyLoadFrom(assemblyPath);
Assembly.Load(inspected.GetName());
}

为简洁起见,我跳过了 try/catch 子句等。

这允许我在运行时将程序集放入 bin 文件夹中,其中包含某些接口(interface)的实现,并让 IoC 容器自动拾取它们。现在有了新的 Roslyn 魔法,调试时不再有物理 DLL。有什么方法可以动态检索程序集名称、项目名称或依赖项名称(在 project.json 中)。

我想我必须实现类似 this example in the Entropy repo 的东西,但我不知道如何针对我的场景实现它。

最佳答案

您可以使用 IAssemblyLoadContextAccessor 接口(interface)动态加载 ASP.NET 5 类库 (.xproj) 项目。以下示例代码适用于 Beta 4:

public class Startup
{
public void Configure(IApplicationBuilder app)
{
var assemblyLoadContextAccessor = app.ApplicationServices.GetService<IAssemblyLoadContextAccessor>();
var loadContext = assemblyLoadContextAccessor.Default;
var loadedAssembly = loadContext.Load("NameOfYourLibrary");
}
}

关于c# - 在 ASP.NET 5 中动态加载程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29421029/

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