У меня есть F # DLL (.NET Framework 4.5.1, F # 4.1, FSharp.Core 4.4.3.0). Единственная ссылка, добавленная NuGet, относится к FSharp.Data.SqlProvider 1.1.41.
Код только в одном файле
module DB
open FSharp.Data.Sql
[<Literal>]
let private dbVendor = Common.DatabaseProviderTypes.MSSQLSERVER
Сборка идет без ошибок
Импорт встроенной библиотеки DLL в SQL-сервер в виде сборки
CREATE ASSEMBLY [Library2] FROM '<path>\Library2.dll' WITH PERMISSION_SET = UNSAFE
Операция завершается с ошибкой
Сборка 'Library2' справочная сборка 'fsharp.core, версия = 4.3.1.0,
культура = нейтральная, publickeytoken = b03f5f7f11d50a3a. ', которая не
присутствует в текущей базе данных. SQL Server попытался найти и
автоматически загружать ссылочную сборку из того же места
откуда пришла ссылка на сборку, но эта операция не удалась
(причина: версия, культура или несоответствие открытого ключа). Пожалуйста, загрузите
ссылаемся на сборку в текущей базе данных и повторите ваш запрос
Теперь прокомментируйте последние две строки в коде
//[<Literal>]
//let private dbVendor = Common.DatabaseProviderTypes.MSSQLSERVER
При этом создание сборки SQL завершается успешно, сборка правильно создается на сервере SQL
Наконец, если я понижу проект до F # 3.1 (FSharp.Core 4.3.1.0), то в обоих случаях ошибки не будет
SQL Server 14.0.1000
Windows 10 Pro
Обратите внимание, что в проекте GitHub repo уже возникла проблема: Issue # 541
Вопросы
- Кто-нибудь видит что-то не так в том, что я делаю?
- Кто-нибудь сталкивался с такой проблемой и решил ее? Если да, то как?