我有一个引用System.Data.Spatial
的.NET MVC Web应用程序,因此我可以在属性上使用DbGeography
数据类型来处理某些地理位置。我正在使用Visual Studio 2012和.NET 4.5,并且在我的开发机器上没有完整的SQL Server安装(只有localdb)。
该应用程序运行良好,直到我将其推送到Azure。只要我的应用程序访问我的DbGeography
属性,它就会抛出此错误:
无法加载DLL“SqlServerSpatial.dll”:指定的模块可以 找不到。
还有其他人遇到过这个问题吗?
答案 0 :(得分:12)
SqlServerSpatial.dll是非托管代码。您必须在服务器上安装正确的版本(64位)。将DLL添加到项目中。将SqlServerSpatial110.dll的属性设置为“复制到输出目录=始终复制”
您可以找到详细信息here
答案 1 :(得分:3)
SQL 2012也安装了这个dll,SQL 2014没有!您必须在计算机上安装SQL Server 2008 R2的Microsoft System CLR类型。
根据您的处理器架构检查其中一个:
点击下一步
修改强>
作为Ian Grainger
的评论,你必须根据你的IIS安装正确的版本。显然,IIS Express默认以32位模式运行。
答案 2 :(得分:1)
<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>
答案 3 :(得分:0)
我遇到了这个问题,并且确实错过了SqlServerSpatial110.dll
我最后按照这里的说明进行操作:
http://dllyes.com/sqlserverspatial110-dll/
基本上你需要亲自动手.dll然后
将SqlServerSpatial110.dll放在\ Windows \ System32中(通常位于 磁盘C)如果你正在运行32位Windows。如果你运行64位 Windows,另外将文件放在\ Windows \ SysWOW64中。
答案 4 :(得分:0)
我已经花了很长时间了,我安装了必需的文件,但是仍然无法正常工作。
显然,该项目想使用x86 SqlServerSpatial.dll 因此,我在“工具”>“选项”>“ WebProjects”>“使用64位IIS”中将IIS Express Build更改为x64 Here is the screen
无需添加新的nuget软件包,只需从Microsoft页面安装SQLSysClrTypes:http://go.microsoft.com/fwlink/?LinkID=188391&clcid=0x409,就可以了;)
希望它对某人有帮助!
答案 5 :(得分:-1)
SqlGeometry
和SqlGeography
类型可用于VS项目(例如
C#)引用Microsoft.SqlServer.Types.dll
。Microsoft.SqlServer.Types.dll
是一个托管库,有一些
非托管库作为先决条件,他们就像
SqlServerSpatialXXX.dll
和msvcrXXX.dll
Microsoft.SqlServer.Types.dll
可用,但我没有看到
功能从2012年开始改变。要获得详细解决方案,您可能希望在其他类似帖子上看到我的answer。
答案 6 :(得分:-1)
I had the same issue in godaddy VPS with windows server 2012 r2
包管理器控制台中的我通过将EF5更新为EF6来解决它
运行到EF5到EF lalest
Install-Package EntityFramework