架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 176|回复: 1

[WinForm] 解决C#引用外部dll散乱问题(内嵌调用)

[复制链接]
跳转到指定楼层
楼主
发表于 2019-9-2 16:40:48
zu
解决C#引用外部dll散乱问题(内嵌调用)

我们写程序·或多或少的会引用外部库文件*.dll(比如常见的 Newtonsoft.Json.dll 、RestSharp.dll、log4net.dll、MySql.Data.dll)

程序编译完成后:*.exe 加 N多dll文件·会不会觉的很烦·有什么好方法集成到一个exe呢?

起初我用第三方工具·操作复杂·还容易出错·然后又找了·那种资源文件方式加载。

今天下午研究了一会儿·内嵌加载。也算可凑合用了

这里把方法分享给大家:



默认命名空间设置好·就可以了。

这里简单优化了一番



有更好的方法·欢迎留言。
  1. /// <summary>
  2.         /// 加载dll库
  3.         /// </summary>
  4.         private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
  5.         {
  6.             // 项目属性->默认命名空间(L:)
  7.             string DefaultNamespace = string.Empty;

  8.             //DefaultNamespace = $"{DefaultNamespace}.using.{new AssemblyName(args.Name).Name}.dll";

  9.             string[] dllName = Assembly.GetExecutingAssembly().GetManifestResourceNames();

  10.             foreach (var item in dllName)
  11.             {
  12.                 if (item.Contains(new AssemblyName(args.Name).Name))
  13.                 {
  14.                     DefaultNamespace = item;
  15.                     break;
  16.                 }
  17.             }
  18.             using (var load = Assembly.GetExecutingAssembly().GetManifestResourceStream(DefaultNamespace))
  19.             {
  20.                 byte[] temp = new byte[load.Length];
  21.                 load.Read(temp, 0, temp.Length);
  22.                 return Assembly.Load(temp);
  23.             }
  24.         }
复制代码







上一篇:必备的查询网址:查征信、婚姻、交友借钱明明白白
下一篇:python网络编程
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
沙发
发表于 2019-9-2 17:37:06
C#将dll打包到exe的程序中
https://www.itsvse.com/thread-2841-1-1.html
(出处: 架构师_程序员)

.net/c# 使用Costura.Fody将DLL打包到EXE中
https://www.itsvse.com/thread-4677-1-1.html
(出处: 架构师_程序员)
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2019-12-6 16:24

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表