You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在.NET类库xUnit测试中加载Npgsql组件问题咨询

解决xUnit测试中无法加载Npgsql.EntityFrameworkCore.PostgreSQL的问题

嘿,我之前在写Entity Framework的xUnit测试时也碰到过几乎一模一样的问题,折腾了好一阵才解决,给你几个实用的排查和解决方向:

  • 确保测试项目与主项目的NuGet包版本完全一致
    这是最常见的原因:主项目里的Npgsql.EntityFrameworkCore.PostgreSQL是2.0.2.0,但测试项目可能引用了不同版本,或者依赖的基础包版本不匹配。

    1. 右键测试项目 → 管理NuGet包,找到Npgsql.EntityFrameworkCore.PostgreSQL,确认版本是2.0.2.0,和主项目完全一致;
    2. 同时检查依赖的Npgsql包版本,2.0.2的EF Core PostgreSQL provider对应的基础Npgsql包应该是4.0.x系列,别选错版本。
  • 清理缓存并重建解决方案
    有时候旧的编译缓存会导致程序集加载冲突,按以下步骤操作:

    1. 在Visual Studio中点击菜单 → 生成 → 清理解决方案;
    2. 手动删除测试项目下的bin和obj文件夹;
    3. 重新生成整个解决方案,确保所有程序集都是最新编译的。
  • 添加程序集绑定重定向(仅适用于.NET Framework项目)
    如果你的测试项目是基于.NET Framework的,可能需要在app.config中添加绑定重定向,强制加载指定版本的程序集:

    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Npgsql.EntityFrameworkCore.PostgreSQL" 
                              publicKeyToken="5d8b90d52f46fda7" 
                              culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" 
                            newVersion="2.0.2.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    

    注意:.NET Core/.NET 5+项目不需要绑定重定向,这类框架采用了不同的程序集加载机制。

  • 确认测试项目的目标框架与主项目匹配
    跨框架引用很容易出现程序集加载问题:比如主项目是.NET Core 2.0,测试项目却用了.NET Framework 4.7。右键测试项目 → 属性 → 应用程序,检查目标框架是否和主项目完全一致。

  • 排查依赖项冲突
    错误提示里提到“or one of its dependencies”,可能是其他依赖包版本不兼容:

    1. 检查测试项目中Microsoft.EntityFrameworkCore的版本,2.0.2的PostgreSQL provider对应的EF Core版本必须是2.0.x,不能用3.0+的版本;
    2. 用NuGet包管理器的“查看依赖项”功能,检查是否有其他与Npgsql相关的包存在版本冲突。
  • 临时应急方案(不推荐长期使用)
    如果上面的方法都没解决,可以尝试把主项目bin文件夹中的Npgsql.EntityFrameworkCore.PostgreSQL.dll和Npgsql.dll复制到测试项目的bin文件夹中,确保版本一致。不过这只是临时解决,最好还是从NuGet层面彻底解决版本问题。

内容的提问来源于stack exchange,提问作者scornflake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:13:17