解决同时引用一个dll的多个版本冲突的问题(HslCommunication为例)

告别dll地狱:probing方法解决HslCommunication多版本共存问题(含避坑指南) 本文深入探讨了使用probing方法解决HslCommunication多版本共存问题的实战方案,有效避免了DLL地狱的困扰。通过详细的配置步骤和避坑指南,帮助开发者在.NET生态系统中实现不同版本DLL的和平共处,提升系统稳定性和开发效率。 阅读详情
AI摘要

本文介绍了如何处理项目中不同版本HslCommunication.dll的冲突,方法包括使用ILMerge工具合并DLL和通过runtime的assemblyBinding设置probingprivatePath。,

解决同时引用一个dll的多个版本的冲突问题(HslCommunication为例)

Demo地址

代码地址:https://gitee.com/chenheze90/L22_DifferentDLLVersionCompatible
代码zip下载:https://gitee.com/chenheze90/L22_DifferentDLLVersionCompatible/repository/archive/master.zip

背景

最近碰上一个问题,一个项目同时引用的好几个不同版本的dll——HslCommunication.dll。而且这几个dll是互相不兼容的。这就导致了项目无法正常与运行下去。两个版本如下

在这里插入图片描述

在这里插入图片描述

1.dll合并法

首先要先去nuget上下载ILMerge,这个是一个第三方的dll合并组件,详细的教程查看博客:https://blog.youkuaiyun.com/magicchz/article/details/13

【工控老马】labview 调用HslCommunication.dll 教程 LabVIEW通过Hs ICommun icat ion 组件与西门门子Smart200 PLC 通信 1.所需软件 LabVIEW、HslCommunication.dll 2. HslCommunication 介绍 HSL是一个基于工业物联网,计算机通讯的架构实现,集成了工业软件开发 的大部分的基础功能实现,比如三菱PLC通讯,西门子PLC 通讯,欧姆龙PLC 通讯,modbus通讯,这些通讯全部进行了多语言的实现,当然,主打的.net 库 的功能集成还更加的强大,除此之外,还实现了跨程序,跨语言,跨 阅读详情

相关推荐

C#项目中多版本DLL冲突的实战解决方案(以HslCommunication为例)

本文针对C#开发中常见的多版本DLL冲突问题,以HslCommunication库为例,提供了两种实战解决方案。详细阐述了使用ILMerge工具进行程序集物理合并的步骤与配置,以及通过运行时probing机制和配置文件实现版本重定向与隔离的方法。文章对比了两种方案的优缺点,并给出了根据项目类型选择合适方案的决策建议,帮助开发者彻底摆脱DLL版本冲突的困扰。

weixin_29268637的博客 727

告别DLL地狱:probing配置法解决HslCommunication版本冲突的3个关键步骤

本文详细介绍了如何利用.NET配置文件中的probing配置法,通过三个关键步骤解决HslCommunication组件的DLL版本冲突问题。该方法通过子目录隔离不同版本的DLL,无需合并代码或修改第三方库,即可实现多版本在同一应用域内和平共存,是处理系统集成和遗留模块升级中依赖冲突的轻量级高效方案。

weixin_29251131的博客 371

Unity MQTT通信实战:基于HslCommunication.dll实现物联网数据高效传输

在物联网与工业互联网应用中,实时可靠的数据通信是核心需求。MQTT协议作为一种轻量级的发布/订阅消息传输协议,以其低带宽消耗、高实时性和解耦特性,成为设备与云端、软件系统间通信的事实标准。其工作原理基于主题(Topic)过滤,发布者将消息发送至代理服务器(Broker),订阅者按需接收,实现了高效的一对多广播与低延迟数据推送。这一技术为数字孪生、实时监控、多端协同等场景提供了理想的通信基础。在Unity引擎中集成MQTT能力,传统方案或面临开发复杂度高、兼容性问题,或存在商业授权限制。HslCommunic

weixin_30861459的博客 665

使用Qt调用HslCommunication(C++调用C#库)

该报错是Qt中的库和CLR有冲突,所以需要把调用C#的dll另外再封装为一个dll做隔离;“公共语言运行时支持(/clr)”和“符合模式”设置为“否”;运行时在这里崩溃,头文件不要暴露CLI的相关库,用纯虚基类或IMPL;10、本机正常运行后拷贝到其他电脑后运行崩溃,需要安装.net;1、开发时VS需要安装CLI项目库,不然新建项目时找不到;3、把调用C#的dll用C++再封装为一个dll;1、实现C#封装一个调用hsl的dll;2、实现C++控制台调用C#的dll库;4、最后再用Qt调用c++的dll;

Stone_石头 1287

基于HslCommunication实现欧姆龙PLC Fins/TCP通讯的C#实战指南

在工业自动化与数据采集领域,上位机与可编程逻辑控制器(PLC)之间的稳定通讯是系统集成的核心基础。其原理在于通过标准化的工业通讯协议,实现不同设备间的数据交换与指令控制。掌握这一技术对于构建MES、SCADA等系统具有关键价值,能显著提升生产数据的实时性与系统自动化水平。常见的应用场景包括设备监控、生产数据采集和远程控制。本文聚焦于利用国产开源组件HslCommunication,通过Fins/TCP协议与欧姆龙PLC建立高效连接,详细解析了从环境配置、核心对象使用到数据读写、心跳重连及故障排查的全流程实践

weixin_30920853的博客 361

HslCommunication 11.3.2在.NET 4.5下的配置与调试

在工业自动化与设备数据采集场景中,.NET运行环境是否匹配往往决定通信组件能否稳定落地。许多开发者把第三方DLL拖入项目后,因目标框架低于组件要求而遭遇编译失败或启动异常。理解运行库与目标包的分工、掌握平台位数配置,是规避此类问题的关键。HslCommunication作为常用工业通信库,支持Modbus TCP、S7等主流协议,能显著简化PLC与上位机的数据交换工作。通过将项目目标框架设定为.NET 4.5、借助NuGet或本地DLL正确引用组件,再配合内置日志与端口验证,即可构建一条可靠的自测链路。本文

weixin_32050773的博客 147

HslCommunication.dll

无需授权,通讯库

HslCommunication:一个非常流行的工业物联网通信插件。 使用此dll可以非常方便,稳定和快速地从多个品牌的PLC设备获取数据,还支持redis,mqtt,websocket等,这可以让您的数据在网络上自由传输,从而降低企业开发成本

///\ ///\ /////////\ ///\ //\\/ //\/ //\\\\\\\\//\ //\\/ //\/ //\/ //\\/ \\/ //\/ //\/ //\/ \//\ //\/ /////////////\/ \//////\ //\/ //\\\\\\\\\//\/ \\\\\//\ //\/ //\/

HslCommunication,版本11.3.2, NET4.5

HslCommunication,版本11.3.2, 基于NET4.5。 用户直接使用, 无需再设置HslCommunication.Authorization.SetAuthorizationCode( "Your Code" )激活码, 24小时后也不会过期, 需要dll文件自己解压提取 HslCommunication.dll文件!如果需要其他版本,私聊我!!!!!!!!!!!!!!!

HslCommunication.dll (版本:11.5.3.0)

近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用的dll库,近期搭建了mqtt接入unity用

Python环境搭建和LabVIEW中的调用

本文主要介绍Python相关的环境搭建、Anaconda的使用以及在LabVIEW中调用Python的方法。

lvxisi的博客 6389

Python实战:超分辨率图像质量评估全攻略——PSNR、SSIM、LPIPS与NIQE的代码实现与优化

本文详细介绍了在Python中实现超分辨率图像质量评估的完整方案,涵盖PSNR、SSIM、LPIPS和NIQE四大核心指标。通过模块化代码设计、多进程并行处理和GPU加速优化,帮助开发者构建高效、可扩展的评估系统,并提供了实战避坑指南与结果解读方法。

weixin_29053073的博客 471

瑞萨RZN2L工业以太网开发避坑指南:EtherCAT从入门到通信调试全流程

本文详细解析了瑞萨RZN2L MPU在工业以太网开发中的EtherCAT从站配置与通信优化全流程。通过硬件设计关键点、协议栈选型、PDO映射策略及DC同步精度优化等实战技巧,帮助开发者快速搭建高效通信框架并解决调试中的常见问题,特别适合工业自动化领域的实时通信需求。

aitie1479的博客 458

RimWorld Mod开发避坑指南:从Defs命名规范到XML结构详解(附实战代码)

本文深入解析RimWorld Mod开发中Defs文件的编写规范与高级技巧,涵盖命名冲突预防、XML结构优化及高级功能实现。通过实战代码示例,帮助开发者避开常见陷阱,提升Mod兼容性与稳定性,特别适合RimWorld Mod开发者参考。

weixin_30790841的博客 449

零基础手把手教你做FMEDA

本文通过分步骤手把手来教大家具体如何做FMEDA,希望对工作中要做FMEDA的童鞋有帮助。对于工作当中用不到FMEDA的童鞋,也可以作为科普知识,更好地了解一下FMEDA及硬件功能安全。

NewCarRen的博客 9926

VSLAM框架对比

格VSLAM特点介绍: (一)ORB-SLAM2 (二)ORB-SLAM3 (三)LSD-SLAM (四)

ljtx200888的博客 2293

Halcon深度图转伪彩图

Halcon深度图转伪彩图

Quintin 3933

在Android Jetpack Compose中实现夜间模式

Android基于Compose的深色主题实现

虎哥LoveDroid 1234

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

上一篇: C#开发中的多线程调用方法导致内部数据混乱问题分析,以及静态类、动态类、静态方法、动态方法的区别
下一篇: C#开发中关于Task后台进程的解读
Chenhz09
博客等级 码龄15年 103粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值