C# ASP.Net核心-应用程序部件-防止将程序集加载到应用程序域
我有一个web应用程序,它有几个依赖项(模块),应该根据配置动态加载。出于某种原因,ASP.Net Core将其中一些依赖项添加为ApplicationPart,并将这些程序集加载到应用程序域中。即使我从C# ASP.Net核心-应用程序部件-防止将程序集加载到应用程序域,c#,.net,asp.net-core,.net-core,appdomain,C#,.net,Asp.net Core,.net Core,Appdomain,我有一个web应用程序,它有几个依赖项(模块),应该根据配置动态加载。出于某种原因,ASP.Net Core将其中一些依赖项添加为ApplicationPart,并将这些程序集加载到应用程序域中。即使我从ApplicationParts列表中删除这些程序集,它们仍然是应用程序域的一部分,无法卸载。有什么方法可以阻止它吗?您可以使用下面的代码删除应用程序部件,请尝试一下并告诉我 public void ConfigureServices(IServiceCollection services) {
ApplicationParts
列表中删除这些程序集,它们仍然是应用程序域的一部分,无法卸载。有什么方法可以阻止它吗?您可以使用下面的代码删除应用程序部件,请尝试一下并告诉我
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.ConfigureApplicationPartManager(o =>
{
o.ApplicationParts.Clear();
o.ApplicationParts.Add(new AssemblyPart(typeof(Startup).Assembly);
});
}
“应该动态加载”是什么意思?如果ASP.NET Core将它们添加为应用程序部件,那么显然它们会被引用并因此加载。此外,将它们添加为应用程序部件意味着控制器。查看组件时,会发现标记帮助程序(如果未加载,则不会发生)。@AlexanderChristov我的意思是,有一个代码基于appsettings.json加载程序集(使用
assembly.Load
)。问题是,在services.AddMvc
之后,即使是未使用的程序集也会被加载,因为它们位于bin
文件夹中。因此,在此方法之前,AppDomain.GetAssemblies
给出了一个较小的程序集列表,之后显示加载了几个额外的程序集。不仅是ASP.Net核心程序集,而且我的自定义程序集不应该一次加载。因此,请使用专用文件夹,例如“Modules”。例如,它可能位于应用程序根文件夹中。这将允许更好地控制加载的内容和原因。是的,这是一个选项,但在这种情况下,我需要一些编译后步骤来将程序集移出bin folderNo。正如我所说,即使我从ApplicationPart list中删除这些程序集,它们仍然是应用程序域的一部分,无法删除unloaded@Random你能把密码写下来吗,你在用什么?