Moving .NET 4.8 to .NET 7 cause SqlClient PlatformNotSupportedException

Hi everyone!

I am working on moving our rhino plugins from .NET Framework 4.8 to .NET 7 as Rhino 8 switches to that. I have transformed edmx database file to EF Core format with EF Core Power Tools but when I try to use the DbContext I get below error:

System.PlatformNotSupportedException: 'Microsoft.Data.SqlClient is not supported on this platform.'

PackageReferences are listed below:

<ItemGroup>
  <PackageReference Include="Microsoft.Data.SqlClient" Version="5.1.5" />
  <PackageReference Include="Microsoft.Data.SqlClient.SNI.runtime" Version="5.1.1" />
  <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Abstractions" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.15">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  </PackageReference>
  <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.15" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer.Design" Version="1.1.6" />
  <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.15">
    <PrivateAssets>all</PrivateAssets>
    <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
  </PackageReference>
  <PackageReference Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
  <PackageReference Include="Microsoft.SqlServer.Server" Version="1.0.0" />
  <PackageReference Include="PreEmptive.Protection.Checks.Attributes" Version="2.0.0" />
  <PackageReference Include="System.Data.Common" Version="4.3.0" />
  <PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
  <PackageReference Include="System.Interactive.Async" Version="6.0.1" />
  <PackageReference Include="System.Memory" Version="4.5.5" />
  <PackageReference Include="System.Reflection.Emit" Version="4.7.0" />
  <PackageReference Include="System.Reflection.TypeExtensions" Version="4.7.0" />
  <PackageReference Include="System.Runtime.Handles" Version="4.3.0" />
  <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" Version="8.0.0" />
  <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
  <PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.0" />
  <PackageReference Include="Microsoft.Extensions.Options" Version="8.0.1" />
  <PackageReference Include="Microsoft.Extensions.Primitives" Version="8.0.0" />
  <PackageReference Include="Microsoft.NETCore.Platforms" Version="7.0.4" />
  <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  <PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
  <PackageReference Include="System.ComponentModel.Composition" Version="8.0.0" />
  <PackageReference Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
  <PackageReference Include="System.Data.OleDb" Version="8.0.0" />
  <PackageReference Include="System.Diagnostics.DiagnosticSource" Version="8.0.0" />
  <PackageReference Include="System.Management" Version="8.0.0" />
  <PackageReference Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
  <PackageReference Include="System.Security.Cryptography.Cng" Version="5.0.0" />
  <PackageReference Include="System.Security.Cryptography.Pkcs" Version="8.0.0" />
  <PackageReference Include="System.Security.Cryptography.Xml" Version="7.0.1" />
</ItemGroup>

Has anyone faced this issue? I have also created an issue at github repository of SqlClient but it may be related to plugin structure so I wanted to ask about it here as well. Thanks a lot! hi @dale, do you have any suggestions?

I have tried to downgrade dependencies but it didn’t work.

I’ve also tried to specify runtime in csproj file like below but they did not work either.

<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<RuntimeIdentifier>win</RuntimeIdentifier>
  <ItemGroup>
    <None Include="$(USERPROFILE)\.nuget\packages\microsoft.data.sqlclient\5.1.5\runtimes\win\lib\net6.0\Microsoft.Data.SqlClient.dll">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>
  </ItemGroup>
  <Target Name="CopyToBin" BeforeTargets="Build">
    <Copy SourceFiles="$(USERPROFILE)\.nuget\packages\microsoft.data.sqlclient\5.1.5\runtimes\win\lib\net6.0\Microsoft.Data.SqlClient.dll" DestinationFolder="$(OutputPath)\bin" />
  </Target>

I have also cleared the nuget cache but it didn’t help. I guess I am in problem with package versions but not sure which versions to use. All of them seems to be the latest versions.

Hi @tahirhan,

Any success with the preview version?

– Dale

Unfortunately @dale, it didn’t help. I have also removed System.Data.SqlClient dependency to prevent possible confusion but it didn’t fix the issue either.

Hi @dale, I have created a new plugin from scratch with RhinoCommon R8 dll and .NET 7 and I am just trying to connect to database with just required dependencies but I still get same error. Is it something related to Rhino 8’s configuration? Creating a console application and connecting to db works but creating a blank rhino plugin and trying to connect to a sql server on cloud via entityframework doesn’t work.

Does this console application target .NET 7?

– Dale

Yes, console application created for test is targeting .NET 7 and it only added below dependency:

  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.15" />
  </ItemGroup>

@curtisw - is this something you can help with?