C# Can';似乎无法修复:System.BadImageFormatException:无法加载文件或程序集';System.Data.SqlClient';

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

我的解决方案中有3个项目(ASP.NETMVC、单元测试、类库)。我想在类库的类中对方法进行单元测试。此类使用
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的数据库项目
  • 引用数据库项目的单元测试项目
在将测试方法添加到将使用数据库的单元测试时,我收到了错误:

测试方法UnitTests.DatabaseTests.TestFileStorage引发异常: System.BadImageFormatException:无法加载文件或程序集'System.Data.SqlClient,版本=4.4.0.0,区域性=neutral,PublicKeyToken=b03f5f7f11d50a3a'。不应加载引用程序集以执行。它们只能在仅反射加载程序上下文中加载。(HRESULT中的异常:0x8013058)-->System.BadImageFormatException:无法加载引用程序集以执行

我通过使用NuGet将System.Data.SqlClient直接添加到我的单元测试项目中来解决这个问题

  • 右键单击项目>管理NuGet软件包
  • 搜索并安装“System.Data.SqlClient”

我认为问题的根源在于,我的数据库项目使用的SqlClient版本与单元测试项目预期的默认版本不同,但找不到该版本。将SqlClient显式安装到单元测试项目解决了该问题。我不确定是什么决定了单元测试项目将查找哪个版本

HintPath
导致了您的问题,请将其删除。
HintPath
表示您希望加载完整的Framework dll,而不是.NET Core dll。您不需要
System.Data.SqlClient
,除非您打算连接到SQLServer@IanKemp这会在我的类中导致错误:缺少对data.sqlclient的引用