【BUG】.NET项目|未能加载文件或程序集“xxx”,或它的某一个依赖项。系统找不到指定的文件的通解

本文介绍了如何处理.NET、Visual Studio和NuGet版本不匹配导致的程序集加载错误。首先,确保安装最新版本的.NET、Visual Studio并更新NuGet。其次,更新项目的目标框架和依赖。如果问题依然存在,检查程序集引用,确保正确安装和引用所需程序集。最后,解决可能的版本冲突和引用顺序问题。保持软件更新是避免此类问题的关键。
摘要由CSDN通过智能技术生成

出错代码:

MSBuildWorkspace workspace = CreateWorkspace();
Solution solution = workspace.OpenSolutionAsync(solutionPath).Result;

OpenSolutionAsync(solutionPath).Result获取Result的时候一直报错,称未能加载文件或程序集。
但是我系统的.NETvisual studionuget等均已经是最高版本。
而且单独打开solutionPath对应的.sln工程文件时都能正常编译生成

偏偏这行报错。
在这里插入图片描述

实际上,这个报错还是因为.NETMSbuild版本过低。低版本不兼容高版本的库。

第一步

你的系统中需要有更高版本的.NETvisual studionuget

安装NET 6.0

注:现在(2022年6月3日)已经有NET 7.0 preview了,但没有stable,也可以装NET 7.0。

点击下载:下载 .NET 6.0 (Linux、macOS 和 Windows)

安装最新版Visual Studio

注:现在最新版是VS 2022。

点击进入官网的安装教程:安装 Visual Studio

更新nuget

运行如下指令:

nuget update -self

注:若上述指令提示称未安装nuget,请先安装。
点击进入NuGet下载页:Available NuGet Distribution Versions

第二步

更新目标框架

先右键项目,选择项目属性,设置Target Framework(目标框架),改成最新版.NET Framework或者最新版.NET Core的框架(就是你当前使用的版本)。
在这里插入图片描述
更改完成后,重新编译一次,保证当前修改不影响代码编译,并确定代码能够用于新的框架。

更新项目依赖

右键出错的项目,点击管理NuGet程序包。
在这里插入图片描述
然后更新所有依赖:
在这里插入图片描述

注意:若你的目标框架未修改,更新将不会成功。

更新依赖后,重新运行代码,就不会出现找不到程序集的报错了。

第三步

倘若一切都是最新版,仍然找不到程序集,这说明你的项目缺少对这个程序集的引用,但又确实用到了该程序集。

这种情况,在NuGet中安装该程序集,即可解决问题。

例如报错未能加载文件或程序集System.IO.FileNotFoundException:“未能加载文件或程序集“System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或它的某一个依赖项。系统找不到指定的文件。

在这里插入图片描述

注:安装时需确保程序集的依赖项符合当前项目的版本。
在这里插入图片描述

第四步

倘若第三步找不到报错提到的程序集、或者已经安装了最新版但仍然提示旧版的报错,可考虑引用顺序,或是否安装错了一个程序集

这一类的典型:

{"未能从程序集“Microsoft.Build.Framework, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中加载类型“Microsoft.Build.Framework.IMetadataContainer”。":"Microsoft.Build.Framework.IMetadataContainer"}

已知Microsoft.Build.Framework已经安装了17.2.0,可报错提示说15.1.0.0中有东西找不到。
即使将using Microsoft.Build.Framework;这行注释掉,报错提示还是不变
——这是因为,其他的程序集中也有Microsoft.Build.Framework,它们的版本过低,并且比Microsoft.Build.Framework先一步被引用。

可以调整using顺序,也可以安装最新版Microsoft.Build,直接解决这个问题。

注:Microsoft.Build.Framework属于Microsoft.Build,但在NuGet中被作为两个包发布,假设已经安装Microsoft.Build,就不需要再安装Microsoft.Build.Framework

总结

微软系列的东西最好是全部向最新版看齐。

Idea不到或无法加载主类,这是一种常见的问题,通常会出现在开发人员在使用Idea进行开发时。出现该问题的原因可能是多种,常见的原因包括:JDK的路径不正确、项目的编译配置错误、缺少相关的Jar包、以及Idea本身的Bug等。 首先,当出现该问题时,开发人员应该首先检查JDK的路径是否正确。如果JDK的路径不正确,那么Idea是无法正常使用的。此时,开发人员需要在Idea中进行相关设置,确保JDK的路径正确设置,以便Idea能够正常加载和使用JDK。 其次,开发人员应该检查项目的编译配置是否正确。如果项目的编译配置不正确,那么Idea可能无法到或加载主类。此时,开发人员需要在Idea中进行相关设置,确保项目的编译配置正确设置,以便Idea能够正常编译项目到主类。 另外,如果缺少相关的Jar包,也会出现该问题。此时,开发人员需要在Idea中进行相关设置,确保所有需要的Jar包均已导入并正确配置,以便Idea能够正确加载和使用这些Jar包。 最后,如果Idea本身存在Bug或者异常,也会导致不到或无法加载主类的问题。此时,开发人员需要尝试升级Idea版本或者重新安装Idea以解决该问题。 综上所述,当出现Idea不到或无法加载主类的问题时,开发人员应该先仔细检查JDK的路径是否正确、项目的编译配置是否正确、是否缺少相关的Jar包、以及Idea本身是否存在Bug或者异常等。只有在排除了所有问题后,才能够确信问题已经得到解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shandianchengzi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值