此平台不支持System.Data.SqlClient

问题描述 投票:4回答:3

我正在使用ASP.NET Core 2和Entity Framework Core 2.0.2。我在Package Manager Controller中创建了一个上下文和Add-Migrations命令工作正常。

但是,当使用Update-Database命令时,我收到一个错误:

此平台不支持System.Data.SqlClient

我无法弄清楚问题出在哪里。你能帮助我吗?谢谢。

我的.csproj文件:

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

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <DebugType>portable</DebugType>
    <PreserveCompilationContext>true</PreserveCompilationContext>
    <DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="4.2.1" />
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.6" />
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.2" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.2" />
    <PackageReference Include="Swashbuckle.AspNetCore" Version="2.3.0" />
  </ItemGroup>

  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.2" />
  </ItemGroup>

</Project>
c# sql-server asp.net-core entity-framework-core database-migration
3个回答
6
投票

几天前我遇到了同样的问题 - 我不确定底层问题是什么,但是将一些EntityFrameworkCore nuget包恢复到2.0.0似乎已经为我解决了这个问题。这些是我降级的包裹:

<PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />

1
投票

同样的问题在这里,但对我来说,System.Data.SqlClient无法作为插件的一部分动态加载。我们的插件dll通过Autofac动态加载,控制服务在运行时选择正确的插件。不幸的是,System.Data.SqlClient不会像这样动态加载,导致出现上述错误消息。所以我必须在控制服务启动时加载它。这显然不是理想的,但是现在它是一个可用的解决方法,因为我们所有的插件仍在我们的控制之下。

在评论中提出问题后,我会更具体。

服务在运行时选择插件。插件通过Autofac注册自己的依赖项,如果该依赖项是Nuget包,它们也将包作为普通的Nuget依赖项。

控制服务在启动时注册插件dll,并且在第一次使用它们时,也会加载插件依赖项。在调用插件后尝试加载System.Data.SqlClient时,会出现“不支持”错误。

将System.Data.SqlClient设置为控制服务中的Nuget依赖项,并正确加载库而不会出现错误。这并不理想,因为即使不使用使用它的插件,SqlClient库也必须始终由控制服务加载。


0
投票

我最近遇到了这个问题,常规.net框架应用程序正在使用.net标准2.0类。 (.net 4.7.x)。唯一最终解决我的问题的是在常规.net应用程序上从packages.config迁移到PackageReference。

© www.soinside.com 2019 - 2024. All rights reserved.