首页 > 编程语言 >WPF 动态加载嵌入主程序的DLL

WPF 动态加载嵌入主程序的DLL

时间:2024-07-11 11:00:41浏览次数:8  
标签:主程序 嵌入 stream assemblyData DLL CurrentDomain WPF 加载

WPF 动态加载嵌入主程序的DLL,好处是节省文件数量,坏处是启动影响加载速度。

首先将DLL添加进项目,选择添加现有项,设置生成操作为“嵌入资源”。

代码:

    public App()
    {   
        
        AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
 
    }

    private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
        if (args.Name.Contains("HandyControl"))
        {
            string resourceName = $"TestWebview2.HandyControl.dll"; // 修改为你的命名空间加DLL名  
            using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
            {
                if (stream == null) return null;

                byte[] assemblyData = new byte[stream.Length];
                stream.Read(assemblyData, 0, assemblyData.Length);
                return Assembly.Load(assemblyData);
            }
        }
        Debug.Print("--------"+args.Name);
        return null;
    }
}

  

标签:主程序,嵌入,stream,assemblyData,DLL,CurrentDomain,WPF,加载
From: https://www.cnblogs.com/wgscd/p/18295601

相关文章

  • WPF ContextMenu MVVM Command CommandParameter Path=PlacementTarget
    <DataGridItemsSource="{BindingBooksList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"SelectionMode="Extended"><DataGrid.ContextMenu><ContextMenu><MenuItemHeader="Ex......
  • WPF 实现 图标按钮
    假设需要实现一个图标和文本结合的按钮,普通做法是直接重写该按钮的模板;如果想作为通用的呢?两种做法:附加属性自定义控件推荐使用附加属性的形式第一种:附加属性创建Button的附加属性 ButtonExtensions1publicstaticclassButtonExtensions2{3//Using......
  • WPF customize DelegateCommand via implementation interface System.Windows.Input.
    publicclassDelCmd:ICommand{privatereadonlyAction<Object>execute;privatereadonlyPredicate<Object>canExecute;publicDelCmd(Action<object>executeValue,Predicate<object>canExecuteValue){execut......
  • 玩鸣潮提示错误代码126:加载x3daudio1_7.dll失败无法打开的多个详细有效解决方法分享
    玩游戏期间你是否也有遇到过找不到x3daudio1_7.dll无法继续执行代码打不开游戏?那么遇到这个问题要怎么办?有什么方法能解决?今天详细给大家介绍一下如何解决找不到x3daudio1_7.dll文件或x3daudio1_7.dll丢失的多个不同方法!第一、x3daudio1_7.dll丢失或损坏的影响系统问题表现......
  • C#的DllImport使用方法
    1.托管代码与非托管代码托管代码:我们编写的C#代码(也包括.net平台上的其他语言,如VB,J#等),首先经过编译器把代码编译成中间语言(IL),当方法被调用时,公共语言运行库CLR把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用使用。托管代码的源代码......
  • DevExpress(WinForms & WPF)中文教程 - 如何减小文档文件大小?
    DevExpress拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress近期重要版本v24.1已正式发布,该版本拥有众多新产品和数十个具有高影响力的功......
  • Simple WPF: WPF实现一个MINIO等S3兼容对象存储上传文件的小工具
    最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园。创作不易,如果觉得有用请在Github上为博主点亮一颗小星星吧!目的之前在阿里云ECS99元/年的活动实例上搭建了一个测试用的MINIO服务,以前都是直接当基础设施来使用的,这次准备自己学一下S3兼容API相关的对象存储开......
  • Simple WPF: C# Task异步任务的取消初探
    最新内容优先发布于个人博客:小虎技术分享站,随后逐步搬运到博客园。创作不易,如果觉得有用请在Github上为博主点亮一颗小星星吧!C#中提供了CancellationTokenSource来实现Task的取消,方法就是在Task异步循环中检测任务是否被取消。最近正在学习C#的任务异步模型,因此撰文以记之。......
  • 探秘odpdx32.dll:核心功能解析与缺失修复指南
    odpdx32.dll是一个动态链接库(DLL)文件,通常与DirectX或OpenGL相关的软件或游戏有关。这个文件可能包含了用于处理图形渲染和多媒体播放的函数和资源,是系统中重要的组件之一。当你的计算机在运行某些应用程序时提示缺少odpdx32.dll文件,这意味着该应用程序依赖于这个文件,但当前系......
  • 深入解析:api-ms-win-net-isolation-l1-1-0.dll的角色与丢失修复指南
    api-ms-win-net-isolation-l1-1-0.dll是一个Windows操作系统中的动态链接库(DLL)文件,它与网络隔离功能相关,属于WindowsAppContainer和WindowsSandbox功能的一部分。这个DLL文件负责处理网络请求的隔离,确保应用程序在AppContainer或Sandbox环境中只能访问授权的网络资源,这对于增......