当前位置: 首页 > news >正文

[.NET学习笔记] -.NET6.0项目动态加载netstandard2.0报错但项目添加引用则正常的问题

问题描述

.NET6.0的项目使用netstandard2.0版本的动态链接库。若是在项目中直接添加引用,应用netstandard2.0项目或者netstandard2.0编译后的dll均能正常工作。但如果通过xcopy等方式,额外将对应的dll复制到执行目录,会执行失败。调用方式一致,均为Assembly.Load(XXXDllName)。
错误信息为:System.IO.FileNotFoundException: 'Could not load file or assembly 'XXXDllName, Culture=neutral, PublicKeyToken=null'. 系统找不到指定的文件。'
《How can I dynamically load .NET core library with .NET framework dependencies?》这个提问跟我的情况基本相同。

分析

  1. 通过项目添加dll引用直接生成到执行目录。(正常运行)
  2. 通过编译完成后复制dll到执行目录。(失败)

经过比对,以上两种方式的生成目录基本一致,只有ProjectName.deps.json这个文件有细微差别。差别主要就是是否有XXXDllName.dll文件的依赖信息。如果用第一种方式生成的*.deps.json文件,覆盖第二种方式的执行目录,是可以正常运行的。所以这里导致错误的原因就是*.deps.json的内容。这与我之前在.net framework上的使用经验完全不一样。如果想想动态加载dll,这样看,在.NET6.0版本上好像不是很方便。

待更新。。。

http://www.lryc.cn/news/126403.html

相关文章:

  • 山景DSP芯片可烧录AP8224C2音频处理器方案
  • 来聊聊托管服务提供商(MSP)安全
  • 最新版本的Anaconda环境配置、Cuda、cuDNN以及pytorch环境一键式配置流程
  • 【数据结构与算法】十大经典排序算法-选择排序
  • 【Spring专题】Spring之Bean的生命周期源码解析——阶段一(扫描生成BeanDefinition)
  • 【C#】判断打印机共享状态
  • 运维监控学习笔记7
  • 【业务功能篇64】maven加速 配置settings.xml文件 镜像
  • Spring Boot(六十四):SpringBoot集成Gzip压缩数据
  • Mac安装opencv后无法导入cv2的解决方法
  • 【题解】按之字形顺序打印二叉树
  • 后端人员如何快速上手vue
  • 基于Prometheus监控Kubernetes集群
  • 【数据分析】pandas (三)
  • nvm命令
  • 从此已是义无反顾
  • Element组件浅尝辄止2:Card卡片组件
  • “深入剖析Java多态:点燃编程世界火花“
  • golang官方限流器rate包实践
  • [windows]MAT- 下载及安装
  • 数组模拟环形队列详解
  • 《论文阅读12》RandLA-Net: Efficient Semantic Segmentation of Large-Scale Point Clouds
  • elementPlus使用el-icon
  • 预测知识 | 神经网络、机器学习、深度学习
  • 【Linux】进程的基本属性|父子进程关系
  • CCF考试:201809-1 卖菜(java代码)
  • android wifi扫描 framework层修改扫描间隔
  • webstorm debug调试vue项目
  • 嵌入式linux的八股文之旅 DAY1
  • 同创永益郑阳|与数智化共舞·业务稳定性保障新动力