我的解决方案中有3个项目(ASP.NET MVC,单元测试,类库)。我想对类库的类中的方法进行单元测试。此类使用system.data.sqlclient
。
当我尝试运行单元测试时,此错误显示:
System.BadImageFormatException:无法加载文件或程序集'System.Data.SqlClient,版本= 4.4.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a'。参考程序集不应该加载执行。它们只能在“仅反射”加载器上下文中加载。 (来自HRESULT的异常:0x80131058)---> System.BadImageFormatException:无法加载参考程序集以执行。”
我已经检查了所有三个项目的构建选项卡:它们都设置为Any CPU
。我试图在类库中重新安装NuGet软件包。我已经检查了所有.csproj
类库.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MySql.Data" Version="8.0.18" />
</ItemGroup>
<ItemGroup>
<Reference Include="System.Data.SqlClient">
<HintPath>..\..\..\..\..\..\..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\system.data.sqlclient\4.5.1\ref\netcoreapp2.1\System.Data.SqlClient.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
答案 0 :(得分:0)
我有同样的问题。我的解决方案包括:
在向使用数据库的单元测试中添加一种测试方法后,我收到了错误消息:
测试方法UnitTests.DatabaseTests.TestFileStorage抛出异常: System.BadImageFormatException:无法加载文件或程序集'System.Data.SqlClient,版本= 4.4.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a'。参考程序集不应该加载执行。它们只能在“仅反射”加载器上下文中加载。 (来自HRESULT的异常:0x80131058)---> System.BadImageFormatException:无法加载执行的引用程序集。
我通过使用NuGet将System.Data.SqlClient直接添加到我的单元测试项目中来解决此问题:
我认为问题的根源是我的数据库项目使用的SqlClient版本与单元测试项目期望的默认版本不同(找不到该默认版本)。明确将SqlClient安装到单元测试项目中可以解决此问题。我不确定是什么决定我的单元测试项目要寻找哪个版本。