AssetStudio项目从VS2022降级到VS2019
因为目前不想装一个新的VS,所以记录一下AssetStudio项目代码从Visual Studio 2022降版本到Visual Studio2019的操作
(注意:我本来VS2019用的就是.net 4.7.2框架,如果不是用这个框架可能还得改改这里或者下载安装.net 4.7.2框架)
有可能打开就会在解决方案中显示项目已卸载,这时候需要修改平台工具集,因为VS2022用的是v143的,VS2019用的是v142的
右键点击AssetStudioFBXNative项目→属性

然后选常规,将配置改为所有配置,将平台工具集改为v142,点应用


这时候重新生成解决方案,还是会有一堆报错,这里先看平台工具集的报错:


这时候就要打开工程目录的文件夹,找到AssetStudioFBXNative.vcxproj,用文本编辑器打开(或者用nodepad++、VS Code打开都行):

打开后会发现还有两处用到v143开发工具集的,直接改成v142就行(Texture2DDecoderNative项目同理,这里有4个v143的,全改了就行):

改完后VS会弹个窗,提示重新加载解决方案的,重新加载就行。
接着就是一堆框架报错,这是因为原来的VS项目有引用.net 5.0和.net 6.0的框架,但是VS2019默认不支持,最多只能到.net 4.8,所以只要项目没用到.net 5.0和.net 6.0框架的东西,就要先去掉引用

打开VS2019 Installer,看到最高版本的.net框架就是.net Framework 4.8
开始修改框架引用,看网上的教程:

但实际上:

接着是官方文档(这还是我选择的2019的版本):

发现没有这个后缀的:

后面尝试了一个,其实就是这个.csproj,可以在VS上右键对应项目->编辑项目文件(直接双击解决方案下的项目也可以),然后直接把没用的框架引用删掉,


解决方案中,除了下图中框住的两个,其它都要改一遍框架引用(即解决方案中全部C#项目都要改框架引用)

改完后重新生成解决方案,发现有报错:
错误 C1083 无法打开包括文件: “fbxsdk.h”: No such file or directory
其实是用到了FBX SDK,但是本地没有找到,要在官网下载2020.2.1版本,为什么一定要这个版本,因为是官方指定的(看下图),用别的版本又是改配置改到吐,还不一定对

下载后按默认路径安装(C盘),否则可能又是遇到要修改路径的问题,这里我也是尝试过使用2020.3.7版本,找半天发现有一些目录结构是不太对的
首先AssetStudioFBXNative这个项目引用的外部目录在这里设置(右键AssetStudioFBXNative项目→属性→配置属性→C/C++→常规→附加包含目录):

安装好的FBX SDK放到这个目录就可以了
重新生成解决方案还是一堆报错:

先看第一个,应该是少了一个程序集依赖项,在解决方案栏打开AssetStudioGUI项目目录,找到依赖项→程序集,右键程序集,点击添加程序集引用,勾上System.Windows.Forms就行:


理论上到这一步就可以了,再次重新生成解决方案,发现没有报错,生成成功:

最后将AssetStudioGUI设为启动项目,就可以运行了:


但是,发布后发现,只要加载一些比较大的文件夹,就会报错:

打开发布设置,然后点击显示所有设置:


发现只能打包32位exe,32位软件一般虚拟内存只有2G,超过估计就会报上述错误
但是这里没得选x64,并且上面那个配置,选Any CPU,或者x86,或者x64,都没用
后面发现又是要改项目属性,在解决方案中,右键C#项目->属性->生成,然后将配置的全部平台都选择一遍,并改一遍,全部改成x64,每个C#项目都这样改一次:

接着,再打开发布设置,点击显示所有设置,就能看到刚刚没得选的x86变成x64了(依旧没得选,估计就是在项目生成设置那里选的)

点击发布,经过我的试验得出,不会再出现OutOfMemoryException的报错了
这里再补充一个冷知识,关于32位程序和64位程序的最大虚拟内存(豆包AI回答的,节选):
32 位程序和 64 位程序的最大虚拟内存,核心取决于地址总线宽度(决定虚拟地址空间的理论上限)和操作系统 / 硬件的实际实现(决定实际可用上限),具体差异如下:
一、32 位程序:理论 4GB,实际 2-4GB
理论最大虚拟内存:
32 位程序的虚拟地址是 32 位二进制数,可表示的地址范围是 0x00000000 ~ 0xFFFFFFFF,对应总空间为:2^32 = 4,294,967,296 字节 = 4GB这是 32 位地址总线的物理上限,所有 32 位程序的虚拟内存理论最大值均为 4GB。
二、64 位程序:理论 16EB,实际 256TB(主流)
理论最大虚拟内存:64 位程序的虚拟地址是 64 位二进制数,理论地址范围是 0x0000000000000000 ~ 0xFFFFFFFFFFFFFFFF,对应总空间为:2^64 = 18,446,744,073,709,551,616 字节 = 16EB(艾字节)这个空间极大(相当于 160 亿 GB),远超当前任何硬件和应用的需求,因此理论上限无实际意义。
posted on
浙公网安备 33010602011771号