解决了 解决方法:在program.cs里面的的头部加入代码 AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve; 然后在写一个方法 private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) { string resourceName = "WindowsFormsApp2." + new AssemblyName(args.Name).Name + ".dll"; using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) { byte[] assemblyData = new byte[stream.Length]; stream.Read(assemblyData, 0, assemblyData.Length); return Assembly.Load(assemblyData); } } WindowsFormsApp2是程序名字 这样就解决了
资源里面可以放文件啊,运行时写入到磁盘即可。但是你要解决先有鸡还是先有蛋的问题,因为没有dll你的程序运行不了。除非你的主程序也是释放出来的,要么所有dll都是动态加载的。
既然 exe 的运行需要某个 dll,那么这个 dll 就是不可缺少的 只要 exe 能找到这个 dll,那么 dll 放在哪里都无所谓,关键是:找得到 你可以和 exe 放在一起,也可以放到操作系统搜索路径(由环境变量 PATH 指示)中,也可以你自己指定一个目录、也可以包含在 exe 文件中....
110,534
社区成员
642,575
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧