Не удалось загрузить DLL 'SqlServerSpatial.dll'
У меня есть веб-приложение .NET MVC, ссылающееся на System.Data.Spatial
, поэтому я могу использовать тип данных DbGeography
для свойства некоторых материалов геолокации. Я использую Visual Studio 2012 с .NET 4.5 и не имею полной установки SQL Server на моей машине разработки (только localdb).
Приложение отлично работает, пока я не нажму его на Azure. Как только мое приложение попадает в мое свойство DbGeography
, оно вызывает эту ошибку:
Невозможно загрузить DLL 'SqlServerSpatial.dll': указанный модуль может не найдено.
Кто-нибудь еще столкнулся с этой проблемой?
Ответы
Ответ 1
SqlServerSpatial.dll - неуправляемый код. Вы должны установить правильную версию (64 бит) на сервере. Добавьте DLL в свой проект. Задайте свойства SqlServerSpatial110.dll в "Копировать в каталог вывода = Копировать всегда"
Вы найдете подробную информацию здесь
Ответ 2
SQL 2012 также устанавливает эту DLL, а SQL 2014 - нет! Вам необходимо установить на CLM-устройства Microsoft System CLR для SQL Server 2008 R2.
Edit
как Ian Grainger
комментарий, вы должны установить правильную версию на основе вашего IIS. по-видимому, IIS Express работает по умолчанию в 32-битном режиме.
Ответ 3
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.SqlServer.Types"
publicKeyToken="89845dcd8080cc91" culture="neutral" />
<bindingRedirect oldVersion="10.0.0.0" newVersion="12.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Ответ 4
Я столкнулся с этой проблемой и действительно отсутствовал SqlServerSpatial110.dll
В результате я получил следующие инструкции:
http://dllyes.com/sqlserverspatial110-dll/
В основном вам нужно получить доступ к этому .dll, а затем
Поместите файл SqlServerSpatial110.dll в \Windows\System32 (обычно на диск C), если вы используете 32-битную Windows. Если вы используете 64-битный Windows, дополнительно поместите файл в папку \Windows\SysWOW64.
Ответ 5
Я боролся с этим довольно долго, я установил необходимые файлы, но он все еще не работал.
Видимо, проект хотел использовать x86 SqlServerSpatial.dll. Поэтому я изменил IIS Express Build на x64 в Инструменты> Параметры> Веб-проекты> Использование 64-битного IIS. Вот экран
Нет необходимости добавлять новые пакеты nuget, просто установите SQLSysClrTypes со страницы Microsoft: http://go.microsoft.com/fwlink/?LinkID=188391&clcid=0x409, и все должно быть в порядке;)
Надеюсь, что это кому-то поможет!
Ответ 6
-
Типы
-
SqlGeometry
и SqlGeography
могут использоваться в VS-проектах (например,
С#), ссылаясь на Microsoft.SqlServer.Types.dll
.
-
Microsoft.SqlServer.Types.dll
- управляемая библиотека и имеет некоторые
неуправляемая библиотека в качестве предпосылок, и они подобны
SqlServerSpatialXXX.dll
и msvcrXXX.dll
- Начиная с Sql Server 2008, разные версии
Microsoft.SqlServer.Types.dll
доступны, однако я не вижу никаких
изменение функциональности с 2012 года.
Для получения подробного решения вы можете увидеть мой ответ на другом подобном сообщении.
Ответ 7
I had the same issue in godaddy VPS with windows server 2012 r2
Я разрешил его, обновив EF5 до EF6
в консоли диспетчера пакетов запускается до EF5 до EF lalest
Install-Package EntityFramework