使用NUnit测试时遭遇WindowsBase程序集加载失败问题求助
问题分析与解决方案
问题根源
- 你手动复制的
WindowsBase.dll来自.NET6 WinDeskApp.Ref,这是仅用于编译的引用程序集,不包含实际执行代码,无法在运行时加载,这是导致BadImageFormatException的核心原因。 - 当项目目标框架设为
net6.0-windows时,.NET SDK会自动引入正确的运行时版本WindowsBase,不需要手动添加引用。
解决方案步骤
1. 移除CoreComponents中手动添加的WindowsBase引用
打开CoreComponents项目的.csproj文件,删除以下手动添加的引用节点:
<ItemGroup> <Reference Include="WindowsBase"> <HintPath>lib\WindowsBase.dll</HintPath> </Reference> </ItemGroup>
2. 清理并重建项目
- 删除CoreComponents和NUnitPrj项目下的
bin、obj文件夹 - 在Visual Studio中执行清理解决方案,再执行重建解决方案
3. 确认测试项目配置
确保NUnitPrj的.csproj仅保留对CoreComponents的项目引用,无需手动添加WindowsBase引用,目标框架保持net6.0-windows即可。
验证
重新调试NUnit测试,此时.NET会自动加载正确的运行时版本WindowsBase.dll,不再出现文件找不到或格式错误的问题。
内容的提问来源于stack exchange,提问作者Gentle Terrorist
相关产品推荐
相关产品推荐

