无法加载Microsoft.Build.Framework程序集,版本不匹配问题求助
项目绑定重定向硬编码旧版本:检查项目的
app.config或web.config(.NET Framework项目)中的<assemblyBinding>节点,若存在针对Microsoft.Build.Framework的绑定重定向指向15.1.0.0,比如:<dependentAssembly> <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-15.1.0.0" newVersion="15.1.0.0" /> </dependentAssembly>将
newVersion改为17.5.0.0,并更新oldVersion范围至0.0.0.0-17.5.0.0。全局程序集缓存(GAC)残留旧版本:系统可能优先加载GAC中的旧版本程序集。以管理员身份打开命令提示符,执行
gacutil /l Microsoft.Build.Framework查看已安装版本,若存在15.1.0.0,执行gacutil /u Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a卸载。新安装包的间接依赖强制旧版本:新引入的包可能依赖15.1.0.0版本的
Microsoft.Build.Framework,通过依赖链覆盖了本地版本。在NuGet包管理器控制台执行Get-Package -ProjectName [你的项目名] -IncludeAllVersions排查依赖,找到强制指定旧版本的包:要么更新该包到兼容17.5.0的版本,要么在项目文件中添加强制引用:<PackageReference Include="Microsoft.Build.Framework" Version="17.5.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference>MSBuild路径优先级错误:环境变量中旧版本MSBuild路径可能排在VS 2022路径之前。执行
where msbuild查看路径顺序,将VS 2022的MSBuild路径(通常为C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin)移至环境变量最前端。项目目标框架兼容性限制:若项目目标为旧版.NET Framework(如4.6.x及以下),可能自动绑定旧版MSBuild程序集。检查项目目标框架设置,尝试升级至兼容17.5.0的版本,或在项目文件中明确指定MSBuild版本:
<PropertyGroup> <MSBuildToolsVersion>17.0</MSBuildToolsVersion> </PropertyGroup>
内容的提问来源于stack exchange,提问作者Prosy A.

