前言
前段时间,应要求需要把现有的UWP
及Electron
应用兼容32位系统,在很多情况下可以分别引用32或64位的dll来打包程序(偷懒的情况下😅),毕竟也是分开提供给用户下载的。甚至对于内存要求不高的程序来说,只提供32位的程序都行😁但对于UWP应用来说,由于Xbox只支持64位,这时两种架构就要都兼容了。并且微软应用商店同一个版本号只能上传一个包,这意味着我们需要将64和32位合并在一个包里面。
正文
引用类型大致分为直接引用或在代码中动态引用。
例如解决方案同级目录有一个文件夹RefDlls
,里面分别是x86
、x64
这2个文件夹,然后这两个文件夹里放的是我们引用的dll:Mylib.dll
对于直接在项目中引用
我们需要用文本编辑器打开项目文件(*.csproj),以如下方式引用dll:
1 | <ItemGroup> |
很明确了,以上代码是使用$(Platform)
来代替文件夹名称名称。
这个方法对于直接保存在项目中的dll文件同样适用:
如有Mylib_x86.dll
和Mylib_x64.dll
两个dll在Assets
项目文件夹中,我们也可以在项目中通过预编译符来引用,具体如:
1 | <ItemGroup> |
这时只需要保留这一个引用,原来针对x86
或x64
的引用就可以删除了,在编译时会使用自动引用对应的dll在项目中。
动态引用
这种情况相对比较好处理,使用条件编译符号即可。进入条件编译符号设定界面:项目-右键菜单-属性-生成
在条件编译符号中加入对应平台字符串,具体是在x86
平台追加WIN32
、x64
平台下追加WIN64
,如下图:
注意:Debug与Release模式需要分别设置
最后,在代码中使用DllImport
来导入时增加条件编译符号的判断就行啦😁😁
1 |
|