繁体   English   中英

如何在程序启动时加载 NetCore 使用的所有 DLL

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM