C#将DLL嵌入到exe当中

动态加载程序集时有时引用的程序集会有依赖项,就会报各种异常;

在网上搜索了很久,终于找到了解决方法,不废话如下.
先把DLL放进资源库里,然后在dll属性里面的BuildAction选择Embedded Resource.
接着在References里面直接引用你要的dll.
接下来把下面的代码放在你要执行的类里面:

    System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
       {
           string dllName = args.Name.Contains(",") ? args.Name.Substring(0, args.Name.IndexOf(‘,‘)) : args.Name.Replace(".dll", "");  

           dllName = dllName.Replace(".", "_");  

           if (dllName.EndsWith("_resources")) return null;  

           System.Resources.ResourceManager rm = new System.Resources.ResourceManager(GetType().Namespace + ".Properties.Resources", System.Reflection.Assembly.GetExecutingAssembly());  

           byte[] bytes = (byte[])rm.GetObject(dllName);  

           return System.Reflection.Assembly.Load(bytes);
       }
    public Form1()//看清楚这是窗体本来的初始化函数
       {
            //在InitializeComponent()之前调用

         AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
            InitializeComponent();
       }

资料原网址:http://blog.csdn.net/lin381825673/article/details/39122257

时间: 2024-10-12 20:02:12

C#将DLL嵌入到exe当中的相关文章

WPF程序将DLL嵌入到EXE的两种方法

WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了>可以参看地下地址(两篇是一样的): 开源中国 http://my.oschina.net/chinesedragon/blog/308336 CNBLOGS http://www.cnblogs.com/luoshupeng/p/3946635.html 引言 前几一写了一个小工具----<Vi

.NET Winform 将引用的dll文件集成到exe中(转)

Winform程序经常需要引用一些第三方dll文件,这些dll在发布后与exe文件保存在同一目录下,虽然将dll文件集成到exe中会增大文件尺寸,但程序目录会相对整洁. 下面介绍一种比较简单的集成方法和注意事项. 第一步,将需要引用的dll文件复制到项目中 您可以:1.复制到项目根目录:2.复制到某个文件夹中. 此处以将dll复制到"lib"文件夹为例. 将要引用的dll文件复制到"lib"文件夹中 第二步,引用复制到项目中的dll文件 右键点击"引用&q

将dll放进exe[.Net]

原文:将dll放进exe[.Net] 两种方案: 1.使用ILMerge工具. 缺点:需离开工程,使用第三方工具(ILMerge). 2.将dll作为Resource放进exe,exe执行时动态加载(Load)Resources内的dll. 缺点:需编写多余代码,加载速度问题. 参考代码: public partial class App : Application { public App() { AppDomain.CurrentDomain.AssemblyResolve += (send

vs 如何将dll打包到exe中

方法如下:首先需要安装NuGet 然后安装Fody.Costura 重新启动vs 编译项目即可 虽然根目录下还生成了dll但是你的程序已经可以脱离dll运行了,其实是将你的dll打入了exe中你可以看到exe的体积变大. 详细步骤参考:http://www.cnblogs.com/lonelyxmas/p/5568876.html(转自博客园) 安装包下载:https://www.nuget.org/packages/Fody/

Register DLL Assembly Gacutil.exe(全局程序集缓存工具)

全局程序集缓存工具使你可以查看和操作全局程序集缓存和下载缓存的内容. 此工具会自动随 Visual Studio 一起安装. 若要运行此工具,请使用开发人员命令提示(或 Windows 7 中的 Visual Studio 命令提示). 使用方法如下: 方法1: (1).开始菜单->Microsoft Visual Studio 2010 ->Visual Studio Tools->Visual Studio Command Prompt (2010) 命令提示,在控制台中输入 gac

Qt界面中嵌入其他exe程序的界面,使用Qt5

下面用一个小例子来演示如何在Qt的界面中嵌入其他exe程序的界面,最终效果如下图所示.本文参考了 http://blog.csdn.net/jiaoyaziyang/article/details/49802993,感谢原作者. 下面是具体的实现方法,用Windows自带的计算器程序做例子.主要的思路就是获取到计算器程序的窗口类名称,然后在Qt中利用QWindow的静态函数fromWinId,创建出QWindow对象,然后将这个对象放到一个QWidget中. 首先是获取计算器程序的窗口类名称,主

分析ntdll.dll和ntoskrnl.exe中的 NT*和ZW*函数区别

OpenProcess-->ntdll!NtOpenProcess-->ntdll!zwOpenProcess-->ntdll!KiFastSystemCall() ↓mov edx, esp ↓sysenter 用户层------------------------------------------------------------------------------------------------------ ↓ 内核层 nt!KiFastCallEntry()      

C# 嵌入第三方EXE界面到panel中

C#可以通过windows API,将第三方程序嵌入到panel中,并且可以隐藏程序边框.问题:焦点在内部程序时,主窗口失去焦点:与内部EXE如何通讯? 代码如下: public partial class FrmIn : Form { public FrmIn() { InitializeComponent(); } [DllImport("User32.dll", EntryPoint = "SetParent")] private static extern

显式加载的dll怎么访问exe里的对象?

讼胜 蒯 殊洳 f祺 次凳 汛副 邾噫 雕恋 楠 辰绽 丿朝 狩 棕帮 矣ゑ 晌嫖 膺参  餐臣  胖 镁倩 盒鸱 解碚 易辘 里 刚甓 氢稂 睁7 吠⒔ 踏楹 蝉 夺沉 笕颂 奎铂 彡璩 阈━ 骥 岁课 垅 溴 蠖鼯 侩畲 伛 菝 钳栎 丕爽 /俩 引ㄒ 厍矸 佧榄 铋醵 嵝鸳 脐烁 ギ踌 澉 骘 籴  醒绍 黩堕 厨 蹉 缝が 竺 畸  椁竽 酰 硕绗 粕外 怦汤 潺 笆垣 恒吻 灭 慝花 惰产 乇┶ 叟 矮蓄 考株  隙 