类库 dll 抛出异常无法加载文件或程序集“Microsoft.Data.SqlClient,版本=5.0.0.0,但它引用版本 5.2.0”

问题描述 投票:0回答:1

使用 Visual Studio 2022 社区 v 17.9.6 TragetFramework 8 项目文件的类库

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>.0
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <AssemblyName>AchieveResource</AssemblyName>
    <RootNamespace>Achieve.AchieveResource</RootNamespace>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Azure.Identity" Version="1.11.0" />
    <PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.0" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="Achieve.Common">
      <HintPath>..\Achieve.Common\bin\Debug\net8.0\Achieve.Common.dll</HintPath>
    </Reference>
  </ItemGroup>

  <ItemGroup>
    <Compile Update="AchieveResource1.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>AchieveResource1.resx</DependentUpon>
    </Compile>
  </ItemGroup>

   </Project>

控制台应用程序正在引用此 dll,当调用其中一个静态方法时,它会抛出错误

FileNotFoundException: Could not load file or assembly 'Microsoft.Data.SqlClient, Version=5.0.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5'. The system cannot find the file specified.
System.TypeInitializationException
  HResult=0x80131534
  Message=The type initializer for 'Achieve.AchieveReserouce.ConnectionStrings' threw an exception.
  Source=AchieveResource
  StackTrace:
   at Achieve.AchieveReserouce.ConnectionStrings.GetEnterpriseConnectionString()
   at Program.<Main>$(String[] args) in C:\Dev\Achieve\2022Projects\ConsoleApp1\Program.cs:line 4

  This exception was originally thrown at this call stack:
    [External Code]

Inner Exception 1:
FileNotFoundException: Could not load file or assembly 'Microsoft.Data.SqlClient, Version=5.0.0.0, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5'. The system cannot find the file specified.

控制台应用程序中的行是

OUConstr = Achieve.AchieveReserouce.ConnectionStrings.GetConnectionSringForOU(1004);

我在引用 System.Data.SQLClient 4.8.6 之前尝试过,但遇到了类似的错误

Inner Exception 1:
FileNotFoundException: Could not load file or assembly 'System.Data.SqlClient, Version=4.6.1.6, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.

知道为什么会这样吗?谢谢

visual-studio visual-studio-2022
1个回答
0
投票

可能是由于项目没有正确引用或者找不到指定版本的程序集。根据您提供的信息,以下是一些建议:

  1. 清理并重建解决方案。
  2. 您的项目引用了 Microsoft.Data.SqlClient 版本 5.2.0,但正在寻找版本 5.0.0.0。这可能是由于某些依赖项需要 Microsoft.Data.SqlClient 版本 5.0.0.0。您可以尝试将 Microsoft.Data.SqlClient 版本降级到 5.0.0.0,或者查找并更新需要版本 5.0.0.0 的依赖项。
  3. 确保项目的输出目录中存在特定版本的 Microsoft.Data.SqlClient (5.2.0)。您可以检查输出目录是否有Microsoft.Data.SqlClient.dll文件。
  4. 考虑是否从 NuGet 获取 Microsoft.Data.SqlClient 或手动将正确的程序集添加到项目中,而不是依赖 HintPath。
© www.soinside.com 2019 - 2024. All rights reserved.