首页 > 编程语言 >【C#】-目标平台×86、×64、Any CPU的区别

【C#】-目标平台×86、×64、Any CPU的区别

时间:2024-07-21 09:01:08浏览次数:8  
标签:主程序 C# 平台 dll 编译 64 CPU

简单来说,
×86平台:
将程序集编译为由兼容×86的32位公共语言运行库运行。
×64平台:
将程序集编译为由支持AMD64或EM64T指令集的计算机上的64位公共语言运行库运行。
Any CPU:
(默认值)将程序集编译为在任意平台上运行。
ltanium:将程序集编译为由采用ltanium处理器的计算机上的64位公共语言运行库运行。

 

若你的启动项目,即主程序(编译出来的exe文件的)是×86平台下编译的,而它所依赖的一个项目(或动态链接库)是由×64位平台编译出来的,则会提示“未能加载文件或程序集……或它的某一个依赖性。视图加载格式不正确的程序。”之类的错误。这是因为32位程序不能加载64位的dll,更不能调用其他的类、方法和对象等。反之,若主程序是由×64平台编译出来的,而dll是×86的呢……当然也是不行的。所以,dll和主程序的生成平台要一致。
若主程序是在Any CPU平台型编译的,那么编译dll的平台必须要和编译主程序的操作系统一致才行。若主程序是在×86或者×64平台下编译的,那么dll就必须要和主程序一致。

总的来说,
1.主程序是Any CPU、×86、×64平台编译的,依赖项目是Any CPU平台编译的。
2.主程序的编译平台和依赖项目的编译平台是一样的。

虽说Any CPU编译出来的程序取决于操作系统,但是由Any CPU编译出来dll则取决于调用它的主程序,即若主程序是32位的,那么dll也是32位的,若主程序是64位的,那么dll就是64位的。所以dll一般采用Any CPU平台编译,而主程序一般采用x86平台编译。

Debug和Release的区别?
Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好的使用。所以一般都是用Release来打包发不程序,另外,Release打包出来的程序也相对来说会小一些。

标签:主程序,C#,平台,dll,编译,64,CPU
From: https://www.cnblogs.com/VisionCodeBlog/p/18314132

相关文章

  • CCStheia添加include路径
    一、在系统内找到该路径二、复制该路径,并更改写法C:\Users\c1519\workspace_ccstheia\OLED\user_lib改为:C:/Users/c1519/workspace_ccstheia/OLED/user_lib三、将路径添加入include设置......
  • 解析Java中1000个常用类:GregorianCalendar类,你学会了吗?
    在线工具站推荐一个程序员在线工具站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。程序员资料站推荐一个程序员编程资料站:程序员的成长之路(http://cxyroad.com),收录了一些列的技术教程、各大面试专......
  • 解析Java中1000个常用类:GregorianCalendar类,你学会了吗?
    在线工具站推荐一个程序员在线工具站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。程序员资料站推荐一个程序员编程资料站:程序员的成长之路(http://cxyroad.com),收录了一些列的技术教程、各大面......
  • 塔子哥的最大数组-美团2023笔试(codefun2000)
    题目链接塔子哥的最大数组-美团2023笔试(codefun2000)题目内容塔子哥有一个长度为n的数组a,默认的求和方式是将a中所有元素加起来。但是塔子哥有一种技能,可以将求和的其中一次加法转换为乘法操作。在这种情况下,数组a的最大和为多少。输入描述第一行,一个正整......
  • IOError:[Errno 2]没有这样的文件或目录:'sample.csv'
    我收到IOError:[Errno2]Nosuchfileordirectory:'sample.csv'CSV文件与脚本位于同一位置。我也从相同的路径运行它。这是我的代码:importcsvkitfile_name='sample.csv'withopen(file_name,'rb')asf:reader=csvkit.reader(f)printreader......
  • Databricks Pyspark 解析连接字符串
    有没有一种简单的方法来解析这种格式的连接字符串?HOST=HostName;Port=1234;ServiceName=Database;USerID=User1;Password=Password123;我需要解析主机和端口、数据库、用户和密码,并将它们分配给单独的变量。importredef解析连接字符串(conn_str):"""解析连接字......
  • InvalidDimensionException:嵌入维度 384 与集合维度 1536 不匹配
    我正在Chromadb上编写python代码来创建矢量数据库我尝试在chromadb中创建包含嵌入的集合。在使用包括嵌入的矢量数据库创建索引期间,我面临这个问题出现错误信息“InvalidDimensionException:嵌入维度384与集合维度1536不匹配”的原因是,你正尝试将维度为384的......
  • Python:如何从 csvreader 列表中删除括号和单引号?
    Pythonn00b在这里。尝试使用csvreader从文件导入数组并打印一个值,但它添加了括号和单引号。这是我的代码:importrandomimportcsvwithopen('crimes.csv','r')ascsvfile:crimes=list(csv.reader(csvfile))hello=["Hello","Greetings","Hi&q......
  • 如何在 Pycharm IDE 中折叠或更好地组织长 Jupyter 笔记本单元?
    我正在使用包含大量单元格和输出的长Jupyter笔记本(.ipynb文件),在PyCharm中导航它们变得很麻烦。IDE似乎本身并不支持单元格折叠,这使得管理笔记本变得相当困难。是否有任何插件、设置或解决方法可以更好地组织或折叠PyCharm中的单元格?如何使我的笔记本文件在此IDE中......
  • pandas.parser.CParserError:标记数据时出错
    我正在尝试使用pandas操作.csv文件,但收到此错误:pandas.parser.CParserError:标记数据时出错。C错误:第3行应有2个字段,看到12我尝试阅读pandas文档,但什么也没找到。我的代码很简单:path='GOOGKeyRatios.csv'#print(open(path).read())data=p......