.NET 8.0 xUnit测试项目加载Wrapper.dll遇文件未找到异常求助
异常原因分析
以下是导致该FileNotFoundException的常见原因:
- 测试项目未配置dll复制规则:主项目「Project」能正常使用wrapper.dll,大概率是主项目里把该dll的「复制到输出目录」属性设为了「始终复制」或「如果较新则复制」,但测试项目没同步这个配置。测试项目运行时,输出目录里没有这个dll,自然加载失败。
- 测试输出目录缺少dll文件:xUnit测试会将自身程序集编译到独立的输出目录(比如
Project.Tests/bin/Debug/net8.0),如果wrapper.dll没被复制到这个目录,测试进程启动后找不到它。可以手动检查测试项目的输出文件夹,确认是否存在wrapper.dll。 - 依赖加载路径不匹配:.NET程序集加载时只会在特定路径查找文件,比如测试进程的工作目录、系统全局程序集缓存等。如果主项目运行时的工作目录包含wrapper.dll,但测试运行时的工作目录不同,就会出现找不到的情况。
- 测试项目未正确引用dll:如果测试项目只是通过代码里的
using语句调用wrapper的功能,但没实际添加对wrapper.dll的引用,编译时可能因为主项目的依赖传递不报错,但运行时测试进程无法定位到该dll。需要在测试项目中直接添加wrapper.dll的引用,或者确保主项目是类库且测试项目通过项目引用依赖主项目(这样依赖会自动传递)。 - 平台或版本不兼容:虽然主项目和测试项目都是.NET 8,但如果wrapper.dll是针对特定CPU平台(比如x86或x64)编译的,而测试项目的平台目标和主项目不一致,也会导致加载失败。比如主项目设为x64,测试项目设为Any CPU,运行时可能加载不到对应平台的dll。
内容的提问来源于stack exchange,提问作者Thomas Qtl
相关产品推荐
相关产品推荐

