10

Trying to use SQLTypeProvider with postgres I get the following errorwhen running

dotnet build

error FS3033: The type provider 'FSharp.Data.Sql.SqlTypeProvider' reported an error: Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. [/home/sashan/code/titan/src/Server/Server.fsproj]

my data provider is this:

type SQL = SqlDataProvider< 
                  ConnectionString = pg_dev_conn_string,
                  DatabaseVendor = Common.DatabaseProviderTypes.POSTGRESQL,
                  UseOptionTypes = true >

If I change it to the following

type SQL = SqlDataProvider< 
              ConnectionString = pg_dev_conn_string,
              DatabaseVendor = Common.DatabaseProviderTypes.POSTGRESQL,
              ResolutionPath = "/home/sashan/code/dotnet/2.1.500/sdk/NuGetFallbackFolder/system.runtime.compilerservices.unsafe/4.5.1/lib/netcoreapp2.0",
              UseOptionTypes = true >

The error goes away but I don't understand why. The fix seems really weird. Why should I have to point it to a file outside of my project? Shouldn't the System.Runtime.CompilerServices.Unsafe.dll be somewhere in one of project's subdirectories where the compiler can find it?

Jonathan Rosenne
  • 2,159
  • 17
  • 27
sashang
  • 11,704
  • 6
  • 44
  • 58

4 Answers4

7

I had the same problem with unity container and after updated this dll from Nuget my problem solved

Maryam
  • 105
  • 1
  • 7
5

i fix it comenting in web.config the entry that contains System.Runtime.CompilerServices.Unsafe

3

Try it in CMD,

you can find gacutil in(C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools>), and other installed frameworks in bin folder, try runs same commands for other '..\bin\NETFX x.x Tools' frameworks if necessary

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools>

gacutil -i "C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.WindowsDesktop\tools\net472\System.Runtime.CompilerServices.Unsafe.dll"

0

I don't know the exact cause of this problem (and other problems alike, which Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe'... But in my case the solution was:

  • Reinstall the System.Runtime.CompilerServices.Unsafe starting with all dependant packages.

Be sure you take note of the dependency tree (NuGet package name and version), you may need the information down the road.

carloswm85
  • 1,396
  • 13
  • 23