VS2022更新至17.2后无法找到.g.cs自动生成文件致构建失败
VS2022 17.2版本XAML对应.g.cs文件缺失构建失败修复
按操作优先级依次尝试,所有操作前先完全退出所有正在运行的Visual Studio进程:
- 清理旧生成缓存:删除解决方案根目录下的隐藏
.vs文件夹,同时删除所有项目子目录下的bin、obj文件夹,重新打开解决方案后执行「重新生成解决方案」,不要使用增量生成。如果是单文件偶发缺失,直接右键点击对应报错关联的.xaml文件,选择「运行自定义工具」即可强制触发单文件的.g.cs生成。 - 修复.csproj配置冲突:VS2022 17.2版本调整了XAML编译器的默认判定逻辑,和VS2019时期的旧配置存在兼容问题。右键项目选择「编辑项目文件」,检查所有.xaml文件的引用配置:
不要给.xaml.cs后置代码文件添加任何Generator标记,否则会被新版本编译器误判为生成项,跳过对应XAML文件的.g.cs生成流程。
标准的XAML文件引用配置如下,删除多余的重复配置项:<Page Include="**\*.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> - 关闭存在bug的XAML热重载功能:17.2版本的XAML热重载模块存在文件锁冲突,会随机拦截obj目录下.g.cs文件的写入,直接导致偶发生成失败。打开VS顶部菜单「工具-选项-调试-热重载」,取消勾选启用XAML热重载、保存文件时应用热重载两个选项,重启VS后重新生成即可。
- 重置损坏的编译组件缓存:打开VS2022开发者命令提示符,依次执行以下命令修复XAML编译组件的注册状态:
gacutil /u Microsoft.Windows.Design.Markup.Compiler devenv /updateconfiguration msbuild /restore - 长期兼容配置:如果以上操作都无法解决问题,可在项目.csproj文件的第一个
<PropertyGroup>节点下添加如下配置,强制回退到和VS2019完全一致的XAML生成逻辑,不会影响项目调试、发布的正常流程:<UseWPFXamlCompiler>false</UseWPFXamlCompiler> <EnableXamlHotReload>false</EnableXamlHotReload>
注意不要将obj、bin目录纳入源代码管理,如果版本库中存在之前提交的旧.g.cs缓存文件,先全部清理删除,否则会干扰VS的增量生成判定逻辑,导致新的生成文件被跳过。
内容的提问来源于stack exchange,提问作者juagicre
相关产品推荐
相关产品推荐

