AssetStudio项目从VS2022降级到VS2019

因为目前不想装一个新的VS,所以记录一下AssetStudio项目代码从Visual Studio 2022降版本到Visual Studio2019的操作

(注意:我本来VS2019用的就是.net 4.7.2框架,如果不是用这个框架可能还得改改这里或者下载安装.net 4.7.2框架)

有可能打开就会在解决方案中显示项目已卸载,这时候需要修改平台工具集,因为VS2022用的是v143的,VS2019用的是v142的

右键点击AssetStudioFBXNative项目→属性

C:\e5ae7bfbe58639952aad6f7c16c5cc9d

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

C:\04306321c265ad4c1d676bedd00115e0C:\87973b2dbdf04d43e1cc249e15317377

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

C:\ab03d355fff5f8f6168fb2581c719d36

C:\7506bf010d7f7d65ae655fe4c2500adb

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

C:\39bc18b251136ea847a65495a206a5ce

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

C:\719c1917450817ea82264988e3939569

改完后VS会弹个窗,提示重新加载解决方案的,重新加载就行。

接着就是一堆框架报错,这是因为原来的VS项目有引用.net 5.0和.net 6.0的框架,但是VS2019默认不支持,最多只能到.net 4.8,所以只要项目没用到.net 5.0和.net 6.0框架的东西,就要先去掉引用

C:\87df15065eaf11176d91bd1ba47cb3a3

打开VS2019 Installer,看到最高版本的.net框架就是.net Framework 4.8C:\47ea23ac184fd236c664647bb98204e3

开始修改框架引用,看网上的教程:

C:\7a8eecfd511a815b9f181604e50c1e3f

但实际上:

C:\7bef477fc918fe5386c9e413bb97604f

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

C:\49c19aedca6d901db9821bdc7b506820

发现没有这个后缀的:

C:\580b2d6f9e3efff5011e9fb1b34a073b

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

C:\39cc6fef1b8825f5893c767bb07c2b05C:\d0481285f414d3548eba35dbfa805699

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

C:\6048d271986799ac6971bd9364cff681

改完后重新生成解决方案,发现有报错:

错误 C1083 无法打开包括文件: “fbxsdk.h”: No such file or directory

其实是用到了FBX SDK,但是本地没有找到,要在官网下载2020.2.1版本,为什么一定要这个版本,因为是官方指定的(看下图),用别的版本又是改配置改到吐,还不一定对

C:\a2a64919c76ef3acf7eea53a3d38c0b8

下载后按默认路径安装(C盘),否则可能又是遇到要修改路径的问题,这里我也是尝试过使用2020.3.7版本,找半天发现有一些目录结构是不太对的

首先AssetStudioFBXNative这个项目引用的外部目录在这里设置(右键AssetStudioFBXNative项目→属性→配置属性→C/C++→常规→附加包含目录):

C:\85f10a6a0beda4710fa7f48302fb1fe1

安装好的FBX SDK放到这个目录就可以了

重新生成解决方案还是一堆报错:

C:\d38b692901deec45974cbfd24825edf0

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

C:\74f6b74f4ab4c92e330dee03819bdf1aC:\3bdfca13d075229d7c349d668f90bc75

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

C:\21c94a9b110962909f3161ab1ce1144f

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

C:\c340ccb29692819c98342cfb7ab03f65C:\a2898345e1d294103867135b58337bd5

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

C:\4f95f2b1ee473703b65cb898b9b2eda4

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

C:\576d6e01904caeb12ba88ad7614646a1C:\91dd2e342a2c91c3015f0a8b928aedcf

发现只能打包32位exe,32位软件一般虚拟内存只有2G,超过估计就会报上述错误

但是这里没得选x64,并且上面那个配置,选Any CPU,或者x86,或者x64,都没用

后面发现又是要改项目属性,在解决方案中,右键C#项目->属性->生成,然后将配置的全部平台都选择一遍,并改一遍,全部改成x64,每个C#项目都这样改一次:

C:\4bdbb2ffcbe40112f55276186b70fb2e

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

C:\79e93d63785710dc8422edefb63d9ea3

点击发布,经过我的试验得出,不会再出现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 2026-01-07 18:36  chj一诺千金  阅读(61)  评论(0)    收藏  举报