有个系统, 需要适应不同类型的数据库(同时只使用其中一种),如果把数据库操作层提取出来,然后针对不同的数据库使用不同的 DLL, 再根据不同的项目使用不同的库, 在以前的 ASP.NET 中, 直接把相关的 DLL 复制到 BIN 目录就可以了, .NET CORE 把 DLL 复制过去,系统不会自动加载, 系统只会自动加载 xx.deps.json 里面相关的程序集。

竟然不能加载 非 xx.deps.json 里定义程的序集, 那么就使用 AssemblyLoadContext 类来加载, 但是 AssemblyLoadContext 类在加载程序集的时候, 也只会加载程序集本身, 程序集所依赖的其他程序集, 也不会自动加载, 我们自己的程序集里肯定是要引用相应的数据库操操作来实现 SQL 功能。

再复杂一点的是, 很多类库,为不同的平台,实现了不同的版本, 如 system.data.odbc 程序集, 我们在引用的时候, 引用的是个编译版本, 编译版本里只有方法名称属性等, 方法里都是抛出异常, 然后还有个运行时, 一般放到 runtimes 目录, 里面有 win, linux, osx, freebsd 这种系统, 正常情况下,.net core 会根据平台运行所有平台自动加载相应的目录里的程序集。

AssemblyLoadContext 类根据目前测试的情况来看, 不会自动加载相应的 DLL, 都需要自己判断去哪个目录加载, 可以通过 System.Runtime.InteropServices.RuntimeInformation 的 IsOSPlatform 方法来判断是哪种类型的操作系统。

使用 AssemblyLoadContext 类加载程序集后, 返回一个 Assembly 对象, 也只能通过 Assembly 对象来获取相应的类型, 还是不能直接使用 Type.GetType(typeName) 的方式来获取。

最新文章

  1. [SDOI2013]方程
  2. 利用node来下载图片到本地
  3. Linux命令之diff
  4. 熟悉熟悉常用的几个算法用JS的实现
  5. SQL2012 提示评估已过期 解决方案- sql server问题
  6. winserver 2008 r2 iis7.5 实现php wordpress url静态化操作步骤(UrlRewrite实现)
  7. Netsharp快速入门(之17) Netsharp基础功能(参照高级设置)
  8. Interview-Increasing Sequence with Length 3.
  9. Qwt的编译与配置
  10. YII CRUD 例子
  11. My.Ioc 代码示例——如何使用默认构造参数,以及如何覆盖默认构造参数
  12. bootstrap注意事项(一)
  13. 想要见识外太空?一款VR头显就能帮你实现梦想
  14. Ubuntu16.04下Office替代品Office Online
  15. 每天记录一点:NetCore获得配置文件 appsettings.json
  16. JS学习笔记Day10
  17. Cocos Creator 橡皮差(刮刮卡)功能(转)
  18. linux系统 之 curl命令
  19. PHP 抽象类、接口,traint详解
  20. 6个免费的C++图形和游戏库

热门文章

  1. python测试开发django-73.django视图 CBV 和 FBV
  2. 201871010117-石欣钰《面向对象程序设计(java)》第二周学习总结
  3. robotframework连接mysql
  4. MongoDB基础知识与常用命令
  5. ubuntu使用anaconda安装tensorflow
  6. Scrapy的中间件(二)
  7. 【转】30种MySQL索引优化的方法
  8. Python语言基础考察点:python语言基础常见考题(一)
  9. C语言实现聊天室软件
  10. Gamma阶段第十次scrum meeting