You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制VS2022使用32位版本的MSBuild

解决VS2022构建.NET Framework 2.0 x86项目的SGEN格式错误问题

针对你遇到的问题,我来分两部分给出具体的解决方案:

一、强制VS2022使用32位MSBuild(直接解决构建失败问题)

这个方法完全可行,也是最直接的解决方案,步骤如下:

  • 打开VS2022,点击顶部菜单栏的Tools → Options
  • 在左侧导航栏展开Projects and Solutions → Build and Run
  • 找到选项Use the 64-bit version of MSBuild to build projects,取消勾选它
  • 点击OK保存设置,重启VS后,就会默认使用32位的MSBuild(路径就是你提到的C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Current\Bin\MSBuild.exe),这样就能和你手动用32位MSBuild构建一样,顺利完成编译。

二、设置SdkToolsPath指向32位SDK工具(针对性解决SGEN错误)

你的猜测是对的——把SdkToolsPath设置为32位版本的路径确实能解决SGEN的格式错误,因为问题根源在于64位的sgen.exe无法加载你项目中的32位.NET Framework 2.0程序集。下面是几种设置方式:

方法1:通过VS项目属性临时设置

  • 右键你的项目 → 选择Properties
  • 切换到Build Events标签页
  • 在Pre-build event command line中添加以下命令:
    set SdkToolsPath=C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\
    
    注意不要加x64后缀,指向32位工具的根目录即可,MSBuild会自动根据你的x86平台选择对应的32位sgen.exe。

方法2:命令行构建时传递全局属性

如果是用命令行构建解决方案,可以直接给MSBuild传递参数:

MSBuild.exe YourSolution.sln /p:SdkToolsPath="C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\"

方法3:修改项目文件(不推荐,硬编码路径)

打开你的项目文件(.csproj),在<PropertyGroup>节点内添加:

<SdkToolsPath>C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\</SdkToolsPath>

这种方法会把路径硬编码到项目里,换机器可能需要修改,所以优先推荐前两种方法。

补充说明

你遇到的SGEN : error : An attempt was made to load an assembly with an incorrect format错误,本质是64位进程无法加载32位程序集:你的项目是x86平台,依赖的是32位的.NET Framework 2.0程序集,但64位MSBuild会调用64位的sgen.exe,导致加载程序集失败。而32位MSBuild会自动调用32位的sgen.exe,所以能正常工作。

内容的提问来源于stack exchange,提问作者Adam Short

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 10:32:32