[英]How to load all DLLs used by NetCore at program startup
我正在 dotnet5 开发 wpf。
DevExpress 组件已添加用于开发。
在开发过程中,当调用包含 DevExpress 控件的子窗口时,加载所需的 DLL 大约需要 2 秒。
加载完成后,如果再次关闭window再调用,会立即调用。
它被认为是加载与 DevExpress 控件相关的 DLL 所需的时间。
我通过Nuget安装了DevExpress相关包。 有没有办法在程序运行时预加载所有必需的与包相关的 DLL?
您可以开始为特定程序集中的类型运行 static 初始化程序。 尽管您可能想在后台线程中启动它。
foreach (var a in
AppDomain.CurrentDomain.GetAssemblies()
.Where(a => a.GetCustomAttribute<AssemblyCompanyAttribute>()?.Company == /* todo */ )
)
{
foreach (var t in a.GetTypes())
RuntimeHelpers.RunClassConstructor(t.TypeHandle);
}
但是可能会有进一步的延迟初始化来加速这些 DevExpress 控件。
有点。 首先请注意,程序集加载和 JIT 是在第一次调用时发生的,因此加载程序集只是工作的一部分。
您可以构建单个文件应用程序https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file并可选择使用提前编译https://docs.microsoft.com/en -us/dotnet/core/deploying/ready-to-run
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.