Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 无法加载DLL';SqlServerSpatial.dll';_.net_Sql Server_Azure - Fatal编程技术网

.net 无法加载DLL';SqlServerSpatial.dll';

.net 无法加载DLL';SqlServerSpatial.dll';,.net,sql-server,azure,.net,Sql Server,Azure,我有一个.NET MVC web应用程序,它引用了System.Data.Spatial,因此我可以在属性上使用DbGeography数据类型来进行一些地理定位。我将Visual Studio 2012与.NET 4.5一起使用,并且在我的开发计算机上没有完整安装SQL Server(仅localdb) 在我将其推到Azure之前,该应用程序运行良好。当我的应用程序点击myDbGeography属性时,它会抛出以下错误: 无法加载DLL“SqlServerSpatial.DLL”:指定的模块无法

我有一个.NET MVC web应用程序,它引用了
System.Data.Spatial
,因此我可以在属性上使用
DbGeography
数据类型来进行一些地理定位。我将Visual Studio 2012与.NET 4.5一起使用,并且在我的开发计算机上没有完整安装SQL Server(仅localdb)

在我将其推到Azure之前,该应用程序运行良好。当我的应用程序点击my
DbGeography
属性时,它会抛出以下错误:

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


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

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


您可以找到详细信息

我遇到了这个问题,并且确实缺少SqlServerSpatial110.dll

我最后按照这里的说明做了:

基本上你需要弄到这个.dll然后

将SqlServerSpatial110.dll放在\Windows\System32中(通常位于 磁盘C)如果您运行的是32位Windows。如果您正在运行64位 Windows,另外将文件放置在\Windows\SysWOW64中

  • SqlGeometry
    SqlGeometry
    类型可用于VS项目(例如。 通过引用
    Microsoft.SqlServer.Types.dll
  • Microsoft.SqlServer.Types.dll是一个托管库,具有一些
    非托管库作为先决条件,它们类似于
    
    SqlServerSpatialXXX.dll
    msvcrXXX.dll
  • 自Sql Server 2008以来,不同版本的
    Microsoft.SqlServer.Types.dll
    是可用的,但是,我没有看到任何可用的 功能从2012年起发生变化

有关详细的解决方案,您可能希望在另一篇类似的文章中看到my。

SQL 2012也会安装此dll,SQL 2014不会!您必须在计算机上安装Microsoft System CLR Types for SQL Server 2008 R2

  • 单击下载
  • 根据您的处理器架构,勾选其中一个

    • 1033\x64\SQLSysClrTypes.msi
    • 1033\x86\SQLSysClrTypes.msi
    • 1033\IA64\SQLSysClrTypes.msi
  • 单击下一步

  • 编辑

    根据Ian Grainger的评论,您必须根据您的IIS安装正确的版本。显然,IIS Express默认以32位模式运行

    I had the same issue in godaddy VPS with windows server 2012 r2
    
    我通过将EF5更新为EF6解决了这个问题

    在包管理器控制台中,运行到EF5到EF LAELEST

    Install-Package EntityFramework 
    

    我花了很长一段时间与它斗争,我安装了所需的文件,但它仍然无法工作

    显然,该项目想要使用x86 SqlServerSpatial.dll 因此,我在工具>选项>Web项目>使用64位IIS中将IIS Express版本更改为x64

    不需要添加新的nuget软件包,只需从microsoft页面安装SQLSysClrTypes即可:而且应该可以;)


    希望它能帮助别人

    谢谢大家!!我试图添加对DLL的引用,但作为非托管代码,这显然不起作用。我在我的项目中创建了一个Lib目录,并将文件固定在那里。@ryanw51,请帮助。您在项目中创建了一个“lib”目录,并将文件粘贴在那里是什么意思。@kooldave98在项目中创建一个新文件夹,将SqlServerSpatial.dll复制到该文件夹中,并将其与项目一起部署。@kooldave98您读过吗@IanGrainger您是否引用了Microsoft.SqlServer.Types.dll?您是否使用了正确的版本(32/64位)?我这样做了,没有任何区别。您好,@Mahmoodvcs-请您更新此答案,说明它取决于IIS/IIS Express的体系结构!我安装了适用于我的体系结构(64)的正确版本,但IIS Express默认以32位模式运行!将上述内容放入app.config文件中。根据需要更改新版本。这解决了问题。相关话题:这对我有用。我使用nuget将SqlServerTypes程序集下载到我的解决方案中,但当我运行EntityFramework命令Add Migration时,它找不到SqlServerSpatial140.dll。我的IIS是32位的,但我的Windows体系结构是64位的,因此我必须将32位dll复制到C:\\Windows\\SysWOW64中。如果运行命令Add Migration and get System.BadImageFormatException,则当dll应为32位时,您有一个64位dll。
    <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>