【爬坑】.Net编译环境导致的问题

news/2024/9/21 1:32:03/文章来源:https://www.cnblogs.com/xiacuncun/p/18400054

1. 背景:

  • 项目中遇到一个串口设备,通过调用它自带的.dll动态链接库通信,最开始在.net framework4.7.2的框架下设备能返回数据(正常通信)。但是换到.net 6.0的框架后,可以运行(没有报错),但是不能得到设备返回的数据了。

2. 错误的解决思路:

  • 当时觉得是框架的问题,反编译可以看到该.dll的反射,但是没有源码不能修改。
  • 如果尝试用.net upgrade assistant强行升级框架,该.dll文件只会出现提示Cannot add reference "xxx.dll" to project "xxx" because their target framework are incompatible ,没有任何实际作用。

3. 正确的解决思路:

  • 不管是.net framework 4.7.2 还是 .net 6.0,当时都是默认的Any CPU,这个环境造成了这个问题。
  • 该串口设备在运行的时候环境是基于x86的,所以在.net 6.0的框架下,把CPU类型选成x86就行了。

4. 获得的经验:

    1. .net upgrade assistant作为一个升级框架的官方免费工具,还是很好用的。用到visual stiduo的拓展工具下载它,如果发现下载很慢的话,右键打开WLAN网络属性,把ipv6给关了,会好的多。
    1. 在.net framework下使用AnyCPU能正常的原因如下图,.net framework 4.5以上默认首选32位
    • 在32位系统下,运行32位程序
    • 在64位系统下,运行32位程序,但是可以获得4G内存
    • 在ARM下,运行32位程序
    • 那么AnyCPU(Prefer 32-bit) 和x86有什么区别?实际上在ARM系统,只能使用 AnyCPU(Prefer 32-bit) 运行32位程序,如果选择x86就无法运行。
    • 为什么需要在64位的设备使用 AnyCPU(Prefer 32-bit),因为如果存在一些库只能在32位程序运行,那么就需要运行的程序是32位,所以需要使用这个方法。
    • ARM32/ARM64是ARM CPU下的32位或者64位系统;
    1. 在.net 环境下没有这个默认选项,在64位的电脑上用AnyCPU表示用anycpu编译的可执行文件将在64位CLR上执行。
    1. 手动改为x86就行,如图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/793032.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决前后端跨域问题

1.代码from django.utils.deprecation import MiddlewareMixinclass CoresMiddleware(MiddlewareMixin):def process_response(self, request, response):response[Access-Control-Allow-Origin] = "*"response[Access-Control-Allow-Headers] = "*"respon…

信奥赛C++老师解一本通题: 1180:分数线划定

​【题目描述】世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才,A市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。面试分数线根据计划录取人数的150%划定,即如果计划录取m名志愿者,则面试分数线为排名第m150%(向下取整)…

IntelliJ IDEA 2024.1.6 (Ultimate Edition)中配置Java Web应用程序

1. 前期准备工作已经下载安装了JDK(https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html)和Tomcat(https://tomcat.apache.org/),并配置了环境变量(安装版的JDK和Tomcat不需要配置环境变量),注意JDK和Tomcat的版本号要相互适…

ToDesk手机远控反诈提醒!筑牢信息防火墙

数字化正在日益深入我们的生活,手机成为我们与外界沟通的重要桥梁,承载着丰富的个人信息与交易数据。 但随之而来的,是层出不穷的典型诈骗案件,手段多变,骗局逼真,而手机远控软件作为现代生活的一种便捷工具,也不幸成为了一些不法分子实施诈骗的工具。给大家看个近期的诈…

学生党懒人必备软件:国产远程协作ToDesk

不知道大家有没有以下同感:出门在外,发现作业或资料需要临时用到,不知道该怎么办?上课需要用到笔记本,但宿舍买的台式机或者笔记本太重,带出去是个问题?小组合作写作业,但地点很难凑到一块,只能在线上协作,怎样才能高效同步完成? 其实这些问题都可以用ToDesk来…

【日记】往哈尔滨西天取经、弱电工程师与软考证书(2113 字)

正文我感觉去往珍在的哈尔滨,就是我的西天取经之路。这也太多灾多难了一些……临时通知参加信贷考试,第一难;申请缺考不成,第二难;机票无法改签只能退票,第三难;公休尾期撞上省分行培训,第四难;需要自带电脑增加行李,第五难;疑似感冒,第六难;今晚铁路临时通知火车…

黑神话:悟空电脑太卡?配置不够?ToDesk云电脑入门新手教程

许多玩家在玩《黑神话:悟空》时会遭遇硬件配置不足导致的游戏卡顿、画面不流畅等问题。 其实这个难题很好解决,用ToDesk云电脑即可迎刃而解。即使你的本地电脑配置不高,也能享受到流畅的游戏体验。 以下是一个针对新手的ToDesk云电脑入门教程,教你轻松解决配置不足的难题。…

仿 SOUL 社交友附近人婚恋约仿陌陌 APP 源码系统

前言 专门为单身男女打造的恋爱交友社区,就是一个由千千万万单身男女组建的大家庭。 他们来自全国各地,或许有着不同的人生经历,却有着共同的对恋爱交友的渴望。 他们可以通过文字、语音、视频聊天的方式,和镜头前的彼此诉说自己工作中发生的趣事, 也可以分享自己在生活中…

FastReport设计器基本操作

1、多看Demo例子 2、提前准备数据,可以是csv文件、数据库等。我先用csv练手,再连数据库,最后写代码去实现生成。一个设计好的 😘宝子:除非不再醒来,除非太阳不再升起,不然都请你好好生活,挣扎着前进,开心的笑。(●◡●)

C语言之动态内存分配与释放

总结了C语言在堆上如何进行动态内存的分配与释放。C语言之动态内存分配与释放 通用指针类型void 通用类型指针具有以下特点: 类型无关,赋值灵活:由于指针本质上是一个存储内存地址的变量,而内存地址是没有类型的,所以void指针可以存储任意类型数据的地址,指向任意类型对象…

windows下安装kubectl

下载kubectl的二进制文件 地址 https://github.com/kubernetes/kubernetes/tree/master/CHANGELOG 根据 k8s 集群的版本,下载对应的客户端 kubectl 工具 例如: 我的集群是1.30.1 找到 1.30的markdown文件然后找到1.30.1的客户端二进制文件然后根据自己硬件下载对应的压缩包 我…

R-Adapter:零样本模型微调新突破,提升鲁棒性与泛化能力 | ECCV 2024

大规模图像-文本预训练模型实现了零样本分类,并在不同数据分布下提供了一致的准确性。然而,这些模型在下游任务中通常需要微调优化,这会降低对于超出分布范围的数据的泛化能力,并需要大量的计算资源。论文提出新颖的Robust Adapter(R-Adapter),可以在微调零样本模型用于…