无法加载DLL'SqlServerSpatial.dll'

时间:2013-06-01 01:55:21

标签: .net sql-server azure

我有一个引用System.Data.Spatial的.NET MVC Web应用程序,因此我可以在属性上使用DbGeography数据类型来处理某些地理位置。我正在使用Visual Studio 2012和.NET 4.5,并且在我的开发机器上没有完整的SQL Server安装(只有localdb)。

该应用程序运行良好,直到我将其推送到Azure。只要我的应用程序访问我的DbGeography属性,它就会抛出此错误:

  

无法加载DLL“SqlServerSpatial.dll”:指定的模块可以   找不到。

还有其他人遇到过这个问题吗?

7 个答案:

答案 0 :(得分:12)

SqlServerSpatial.dll是非托管代码。您必须在服务器上安装正确的版本(64位)。将DLL添加到项目中。将SqlServerSpatial110.dll的属性设置为“复制到输出目录=始终复制”

您可以找到详细信息here

答案 1 :(得分:3)

SQL 2012也安装了这个dll,SQL 2014没有!您必须在计算机上安装SQL Server 2008 R2的Microsoft System CLR类型。

  1. http://www.microsoft.com/en-us/download/details.aspx?id=26728
  2. 点击下载
  3. 根据您的处理器架构检查其中一个

    • 1033 \ 64 \ SQLSysClrTypes.msi
    • 1033 \ 86 \ SQLSysClrTypes.msi
    • 1033 \ IA64 \ SQLSysClrTypes.msi
  4. 点击下一步

  5. 修改

    作为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)

  • SqlGeometrySqlGeography类型可用于VS项目(例如 C#)引用Microsoft.SqlServer.Types.dll
  • Microsoft.SqlServer.Types.dll是一个托管库,有一些 非托管库作为先决条件,他们就像 SqlServerSpatialXXX.dllmsvcrXXX.dll
  • 自Sql Server 2008以来,版本不同 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