C# Can';似乎无法修复:System.BadImageFormatException:无法加载文件或程序集';System.Data.SqlClient';
我的解决方案中有3个项目(ASP.NETMVC、单元测试、类库)。我想在类库的类中对方法进行单元测试。此类使用C# Can';似乎无法修复:System.BadImageFormatException:无法加载文件或程序集';System.Data.SqlClient';,c#,mysql,nuget,C#,Mysql,Nuget,我的解决方案中有3个项目(ASP.NETMVC、单元测试、类库)。我想在类库的类中对方法进行单元测试。此类使用system.data.sqlclient 当我尝试运行单元测试时,此错误显示: System.BadImageFormatException:无法加载文件或程序集“System.Data.SqlClient,版本=4.4.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a”。不应加载引用程序集以执行。它们只能在仅反射加载程序上下文中加载。(来自HRES
system.data.sqlclient
当我尝试运行单元测试时,此错误显示:
System.BadImageFormatException:无法加载文件或程序集“System.Data.SqlClient,版本=4.4.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a”。不应加载引用程序集以执行。它们只能在仅反射加载程序上下文中加载。(来自HRESULT:0x80131058的异常)--->System.BadImageFormatException:无法加载引用程序集以执行。“
我已经检查了所有三个项目的build选项卡:它们都设置为任意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>
netcoreapp2.1
任意CPU
..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\..\Program Files\dotnet\sdk\NuGetFallbackFolder\system.data.sqlclient\4.5.1\ref\netcoreapp2.1\system.data.sqlclient.dll
我也遇到了同样的问题。我的解决方案包括:
- 使用System.Data.SqlClient的数据库项目
- 引用数据库项目的单元测试项目
- 右键单击项目>管理NuGet软件包
- 搜索并安装“System.Data.SqlClient”
我认为问题的根源在于,我的数据库项目使用的SqlClient版本与单元测试项目预期的默认版本不同,但找不到该版本。将SqlClient显式安装到单元测试项目解决了该问题。我不确定是什么决定了单元测试项目将查找哪个版本
HintPath
导致了您的问题,请将其删除。HintPath
表示您希望加载完整的Framework dll,而不是.NET Core dll。您不需要System.Data.SqlClient
,除非您打算连接到SQLServer@IanKemp这会在我的类中导致错误:缺少对data.sqlclient的引用