此平台不支持System.Data.SqlClient

时间:2018-03-19 03:50:50

标签: c# sql-server asp.net-core entity-framework-core database-migration

我正在使用带有Entity Framework Core 2.0.2的ASP.NET Core 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>

7 个答案:

答案 0 :(得分:5)

几天前我遇到了同样的问题 - 我不确定底层问题是什么,但是将一些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 :(得分:1)

以防万一有人在这里尝试在freebsd-x64上的net50 / netstandard上运行System.Data.SqlClient:Microsoft.Data.SqlClient为我工作。

也许这适用于每个便携式选项和/或所有系统。[...]-> Microsoft。[...] dll。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

我花了几个小时来解决这个问题,但设法解决了它。在这里发布以防它帮助其他人节省一些时间。

在我的 .csproj 文件中

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>

删除它解决了我的问题。可以在here找到一些信息。将该值设置为 true 会导致所有依赖项都被复制到输出文件夹,对我来说,可能在加载应用程序时,它对加载哪个 System.Data.SqlClient.dll 感到困惑。

答案 5 :(得分:0)

如果在为 IIS 发布时发生这种情况。为 iis pool v.4 移除,放置 No Managed Code

答案 6 :(得分:-2)

将框架更改为.NetCore 3.x或.NetFramework 4.x ...