我正在使用带有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>
答案 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 ...