Одна из наших библиотек классов использует пространственные типы Microsoft, такие как DbGeography. При запуске нашего приложения на чистой машине без старых версий SQL Server и Visual Studio мы получаем это исключение:
Пространственные типы и функции для этого провайдера недоступны потому что сборка "Microsoft.SqlServer.Types" версии 10 или выше не удалось найти.
Решение, по-видимому, должно установить этот пакет nuget:
Install-Package Microsoft.SqlServer.Types
После установки пакет nuget дает инструкции о том, как ссылаться на DLL из каждого типа проекта:
Чтобы развернуть приложение, использующее пространственные типы данных, на компьютере, на котором не установлены "Системные CLR-типы для SQL Server", вам также необходимо развернуть собственную сборку SqlServerSpatial110.dll.
Оба x86 (32-разрядных) и x64 (64-разрядных) версии этой сборки были добавлены в ваш проект под подкаталогами SqlServerTypes\x86 и SqlServerTypes\x64. Собственная сборка msvcr100.dll также включена в случае, если среда выполнения С++ не установлена.
Вам нужно добавить код для загрузки правильной одной из этих сборок во время выполнения (в зависимости от текущей архитектуры).
Приложения ASP.NET Для приложений ASP.NET добавьте следующую строку кода в метод Application_Start в Global.asax.cs: SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath( "~/бен" ));
Настольные приложения Для настольных приложений добавьте следующую строку кода для запуска до выполнения любых пространственных операций: SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
Сайт проекта пакета nuget не отвечает, поэтому я не уверен, что это лучший подход к использованию в 2016 году.
Моя проблема в том, что я не могу понять, как вызвать LoadNativeAssemblies из приложения ASP.NET Core 1.0. Мы используем полную структуру (net461), а не базовую структуру.
public class Startup
{
public Startup(IHostingEnvironment env)
{
...
SqlServerTypes.Utilities.LoadNativeAssemblies(env.WebRootPath);
...
}
}
Каков наилучший способ включить файлы dll SqlServer.Types в приложение ASP.NET 1.0?
Связанные вопросы здесь и здесь в StackOverflow.
Большое спасибо.