VS2022编译.NET Framework4.6.2测试项目报BC31091错误,VS2019正常
针对你遇到的error BC31091: Import of type 'ValueTuple(Of ,)' from assembly or module 'CommonLanguageRuntimeLibrary' failed错误,以下是几个针对性的排查和解决方向:
强制安装/更新System.ValueTuple NuGet包
.NET Framework 4.6.2本身不原生支持ValueTuple,依赖NuGet包提供该类型。打开项目的NuGet包管理器,搜索System.ValueTuple,确保已安装;如果已安装,尝试更新到最新的兼容版本(目前最新稳定版是4.5.0),并确认引用的是NuGet包的版本而非系统CLR自带的。调整VB语言版本设置
右键项目→属性→编译→点击“高级编译选项”,将“语言版本”设置为15.0或更高(ValueTuple在VB15中引入)。VS2022的默认语言版本可能与VS2019不同,手动指定版本可避免编译工具链的兼容性问题。也可以直接编辑项目文件(.vbproj),在<PropertyGroup>节点中添加:<LangVersion>15</LangVersion>清理编译残留并重新生成
删除项目目录下的bin、obj文件夹,清理NuGet本地缓存(可通过VS的“工具→NuGet包管理器→程序包管理器设置→清除所有NuGet缓存”操作),之后重新生成整个解决方案,排除旧编译文件的干扰。检查项目引用的有效性
打开项目的引用列表,查看是否存在System.ValueTuple引用。如果存在,确认其“复制本地”属性设置为True;如果不存在,手动添加NuGet包的引用而非系统程序集。同时排查是否有其他冲突的引用(比如重复引用不同版本的ValueTuple)。修复VS2022的VB编译组件
打开Visual Studio Installer,选择你的VS2022安装实例,点击“修改”,确保“.NET Framework 4.6.2开发工具”和“Visual Basic编译工具”已勾选并完成修复安装,避免因组件损坏导致的编译异常。排查项目文件中的特殊配置
编辑项目文件(.vbproj),检查是否存在<NoCompilerStandardLib>True</NoCompilerStandardLib>这类禁用标准库的配置,若有则改为False;同时确认是否有条件编译符号或自定义的程序集引用路径干扰了ValueTuple的加载。
内容的提问来源于stack exchange,提问作者rasputino

