SQLProvider icon indicating copy to clipboard operation
SQLProvider copied to clipboard

Suggestion - infer resolution path for script scenario .fsx (MacOs) ?

Open jkone27 opened this issue 3 years ago • 1 comments
trafficstars

Describe the bug Would be nice if resolution path would be inferred by .nuget directory of .fsx script automatically... also seems #r "nuget: System.Data.SqlClient" is required else the type throws an exception...

To Reproduce use provider from .fsx script and try reference ngpqslq.dll from current directory

#r "nuget: SQLProvider"
#r "nuget: System.Data.SqlClient"
#r "nuget: Npgsql"

open FSharp.Data.Sql
open System
open Npgsql

//docker run --name posttest -d -p 5432:5432 -e POSTGRES_PASSWORD=password postgres:alpine


let [<Literal>] dbVendor = 
    Common.DatabaseProviderTypes.POSTGRESQL

let [<Literal>] connString = 
    "Host=127.0.0.1;Database=postgres;Username=postgres;Password=password;Port=5432"

let [<Literal>] resPath = __SOURCE_DIRECTORY__

// add npgsql.dll locally
type sql = SqlDataProvider<DatabaseVendor=dbVendor, ConnectionString=connString, ResolutionPath=resPath>

Expected behavior Would be nice not to need the resolution path when using the type provider from scripts using

#r "nuget : SQLProvider"

Desktop (please complete the following information):

  • Device: MAC
  • OS: MacOS

jkone27 avatar Jun 16 '22 08:06 jkone27

This is a great idea, but how do we know the path of that DLL? With '#r' the FSI loads the SQLProvider then from nuget cache, but SQLProvider loads Npgsql via reflection, so we'd need to know the path and thus e.g. which version we are loading.

It seems to me that FSI creates some kind of temporary project in some location %home%\.packagemanagement\nuget\Projects\(guid)

Thorium avatar Nov 14 '22 09:11 Thorium