У меня установлена последняя версия Visual Studio 20019, и я создаю консольное приложение. NET Framework 4.8.
Я установил пакет nuget SQL Provider и пытаюсь использовать 64-битный odb c драйвер, следуя ODB C do c.
Я установил x64
в качестве платформы в проекте F # свойства, как показано ниже
But when I type the classical code
open FSharp.Data.Sql
[]
let dnsConn = @"DSN=foo"
type db = SqlDataProvider
let ctx = db.GetDataContext()
there is an
Error IM014, message: [Microsoft][ODBC Driver Manager]
The specified DSN contains an architecture mismatch between the Driver and Application
and a red squiggly line in the editor, like below.
What I've tried to do
I've checked that the DSN is ok by implementing an equivalent access via traditional C# code
static void OdbcSelect(OdbcConnection conn)
{
using (var cmd = new OdbcCommand(sql, conn))
{
and it's all fine.
I've also opened an проблема на github, где они предложили
Попробуйте VS Code, я думаю, что это запускает FSI / FS C на 64-битной версии по умолчанию
Действительно, я пробовал fsianycpu
из командной строки разработчика для VS 2019, и следующая команда не выдает никаких ошибок
- type db = SqlDataProvider<Common.DatabaseProviderTypes.ODBC, dnsConn>;;
type db = SqlDataProvider<...>
Но мне действительно нужно использовать Visual Studio 2019 ... И в любом случае, если мне нужно использовать Visual Sutdio Code, потому что это единственный способ решить эту проблему (но действительно ли это единственный способ?), Я должен перенести проект из. Net Framework в Core (верно?) и после первой попытки. NET Код я получаю
error FS3033:
Errore segnalato dal provider di tipi 'FSharp.Data.Sql.SqlTypeProvider':
Could not load file or assembly 'System.Data.Odbc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'.
Краткое описание ситуация
Я использую 64-разрядную версию Win10 и использую VS2019 с. NET Framework и / или VS Code с. NET Core. Обратите внимание, что с чистым подключением odb c, командой и считывателем данных (код ниже) VS2019 и VS Code могут собирать и работать нормально, без каких-либо проблем с odb c во время компиляции и выполнения.
let conn = new OdbcConnection(dnsConn)
conn.Open()
let cmd = new OdbcCommand(sql, conn)
let DR = cmd.ExecuteReader()
while (DR.Read()) do
Значит ошибка сборки вылезает только когда ввожу
type db = SqlDataProvider<Common.DatabaseProviderTypes.ODBC, dnsConn> `