首页 > 解决方案 > 作为 dotnet cli 工具启动时获取“此平台不支持 System.Data.SqlClient”

问题描述

DbContext我们有一个使用from的简单 netcore 2.2 控制台应用程序Microsoft.EntityFrameworkCore。从控制台按原样启动时,它按预期工作。

但是,我们决定将其用作dotnet CLI 工具。它的 .csproj 文件包含:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <AssemblyName>dotnet-dbupdate</AssemblyName>
    <Title>Db Updater</Title>
    <Version>1.0.1</Version>
    <PackageId>DbUpdater</PackageId>
    <Product>DbUpdater</Product>
    <PackageVersion>1.0.1</PackageVersion>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
  </ItemGroup>
</Project>

我们将它打包到我们的 Nuget 服务器dotnet pack。然后在目标文件夹中,我们有以下 .csproj 文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="DbUpdater" Version="1.0.1" />
  </ItemGroup>
</Project>

我们从这个文件夹中恢复它并执行:

dotnet restore
dotnet dbupdate

突然,我们收到了 onDbSetToList方法调用:

System.Data.SqlClient is not supported on this platform

将它作为 dotnet CLI 工具启动肯定存在问题。然而,我们未能得到这个问题是什么以及如何解决它。在网上搜索并没有给我们任何尝试的想法。

标签: c#entity-framework.net-coredotnet-cli

解决方案


我遇到了同样的问题,这是因为使用了错误版本的 System.Data.SqlClient,在我的情况下,应用程序是使用 .NET 4.6 和 .Net Standard 2.0 中的类库构建的,它依赖于 System .Data.SqlClient。在生产环境中替换适当版本的 System.Data.SqlClient(在我的情况下为 .NET 4.6)后,该问题得到解决。


推荐阅读