【问题标题】:Could not load file or assembly 'Microsoft.Data.SqlClient' in .NET standard Library无法在 .NET 标准库中加载文件或程序集“Microsoft.Data.SqlClient”
【发布时间】:2020-04-28 09:05:33
【问题描述】:

我创建了一个 .NET 标准库 2.0,它使用 Microsoft.Data.SqlClient Version=1.12.20106.1。我指的是控制台应用程序(.NET Framework 4.7.2)中的这个库。拨打电话时,我收到如下所示的错误,即使我添加了程序集引用。有人可以帮忙吗?

无法加载文件或程序集“Microsoft.Data.SqlClient, Version=1.12.20106.1, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5”或其依赖项之一。系统找不到指定的文件。":"Microsoft.Data.SqlClient, Version=1.12.20106.1, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5"}

【问题讨论】:

    标签: c# ado.net .net-standard


    【解决方案1】:

    您可能会在完整的错误中看到类似的内容

    找到的程序集的清单定义与 装配参考。 (HRESULT 异常:0x80131040)

    当我遇到类似问题并在调试器中运行单元测试时,我会在单元测试输出预绑定状态信息中看到这种东西

    Pre-bind state information
    LOG: DisplayName = Microsoft.Data.SqlClient, Version=2.0.20168.4, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5
     (Fully-specified)
    LOG: Appbase = file:///C:/Dev2/MyApp/UnitTests/bin/Debug
    LOG: Initial PrivatePath = NULL
    Calling assembly : MyApp, Version=1.0.0.2, Culture=neutral, PublicKeyToken=c.
    ===
    LOG: This bind starts in default load context.
    LOG: Using application configuration file: C:\Dev2\myapp\UnitTests.dll.config
    LOG: Using host configuration file: 
    LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
    LOG: Redirect found in application configuration file: 2.0.20168.4 redirected to 1.12.20106.1.
    LOG: Post-policy reference: Microsoft.Data.SqlClient, Version=1.12.20106.1, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5
    LOG: Attempting download of new URL file:///C:/Dev2/MyApp/UnitTests/bin/Debug/Microsoft.Data.SqlClient.DLL.
    WRN: Comparing the assembly name resulted in the mismatch: Major Version
    ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
    

    问题是程序集绑定问题,答案here 可能会有所帮助。不用担心它提到了 VB6,实际问题与此无关。

    【讨论】:

      【解决方案2】:

      仅当您的 netstandard2.0 库已将 Microsoft.Data.SqlClient 引用为 NuGet 包并且在构建时未复制所引用的程序集时,此答案才有用。

      您可能必须使用 dotnet publish 来复制 Microsoft.Data.SqlClient 程序集。这是我最近偶然发现的,我必须修复using a custom resolver。您不应该使用该解析器,但您应该检查发布您的应用程序和库是否有助于解决问题。

      【讨论】:

      • 它认为它一定是在复制,因为修复程序集绑定解决了问题。
      • 好吧,我不知道问题已经解决了,因为作者还没有回复任何东西。
      猜你喜欢
      • 2020-05-27
      • 1970-01-01
      • 2023-02-04
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-06
      相关资源
      最近更新 更多