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

单元测试项目调用被测试项目时程序集加载失败问题排查

程序集加载失败问题排查

问题背景

我有一个项目(ProjectA),使用了Microsoft.Graph及相关组件;另一个项目(ProjectB)是它的单元测试项目。在ProjectB中创建ProjectA的对象时,报错无法加载ProjectA引用的程序集。

ProjectA构造函数代码

public GraphApi(string tenantId, string clientId, string clientSecret)
{
    string[] scopes = new[] { "https://graph.microsoft.com/.default" };
    var clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
    graphClient = new GraphServiceClient(clientSecretCredential, scopes);
}

ProjectB测试方法代码

[TestMethod]
public void GetGroups()
{
    GraphApi graphApi = new GraphApi(TenantId, ClientId, Secret);
}

报错信息

运行测试时,在ProjectA构造函数的var clientSecretCredential =...行抛出错误:

System.IO.FileNotFoundException: 'Could not load file or assembly 'Microsoft.Identity.Client, Version=4.57.0.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae' or one of its dependencies. The system cannot find the file specified.'

Microsoft.Identity.Client已在ProjectA中引用,且版本与报错中的4.57.0.0一致:
Microsoft.Identity.Client 4.57.0.0 引用截图

我想确认是否是ProjectA的引用问题导致,而非需要在ProjectB中安装报错提及的包。请问问题原因是什么,该如何排查?

补充:最近刚把所有项目从C盘迁移到新的S盘,猜测可能和这个操作有关。


可能原因及排查步骤

  • 项目迁移引发的路径/缓存问题
    • 清理NuGet缓存:执行命令 dotnet nuget locals all --clear,之后重新还原所有项目的NuGet包
    • 删除解决方案下所有项目的bin和obj文件夹,重新生成整个解决方案
    • 打开ProjectA的.csproj文件,检查Microsoft.Identity.Client的引用路径,确认是否还残留旧的C盘路径,手动修正为S盘的正确路径
  • 依赖传递被阻断
    • 检查ProjectA的.csproj文件中Microsoft.Identity.Client的PackageReference配置,是否设置了PrivateAssets="all"这类限制依赖传递的属性,若有则移除该配置
    • 在Package Manager Console中执行 Update-Package -reinstall Microsoft.Identity.Client,强制修复ProjectA中的包引用
  • 测试环境的程序集复制问题
    • 查看ProjectB的测试输出目录(如bin/Debug/netX.x),确认是否存在Microsoft.Identity.Client.dll文件。如果没有,说明依赖未被自动复制到测试目录
    • 可以临时在ProjectB中添加同版本的Microsoft.Identity.Client包,若问题解决,说明传递依赖确实存在问题,再回头排查ProjectA的引用配置
  • 程序集版本绑定冲突
    • 检查解决方案中的app.config或web.config文件,查看是否存在assemblyBinding节点的版本重定向配置,确认是否引发了版本冲突
  • 磁盘权限限制
    • 新的S盘可能存在权限限制,导致测试进程无法读取该路径下的程序集。尝试以管理员身份运行Visual Studio,重新执行测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 17:22:55