无法加载DLL"SqlServerSpatial140.dll":找不到指定的模块

rev*_*ter 14 .net sql-server dll geospatial

这对我来说都是新的,所以请耐心等待......

我正在开发一个Visual Studio项目; 它是一个返回一些数据的Web服务.

我刚刚尝试在本地计算机(IIS)上对Web服务器进行特定调用,我收到此错误:

无法加载DLL"SqlServerSpatial140.dll":找不到指定的模块

在有人说之前 - 是的,显然我错过了这个DLL文件.我在网上搜索过,看不到我从哪里下载它(我安装了Microsoft SQL Server系统CLR类型(x64)和非X64.我安装了SQL Server 2014和2016的Microsoft System CLR类型)

有谁知道如何解决这一问题?有谁知道我是否可以从某个地方下载这个文件?

Pur*_*ome 13

安装Microsoft.SqlServer.Typesnuget包时,应该在root中创建一个新文件夹:

\SqlServerTypes
   |_x64
   |_x86
Run Code Online (Sandbox Code Playgroud)

哪个应该包含适当的dll.它也是自动设置,如果更新则复制.

然后,确保您的应用加载适当的程序集:

  • 对于ASP.NET Web应用程序: SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
  • 对于桌面应用程序/其他: SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

不确定这是否适用于.NET Core.

  • 安装 Microsoft.SQLServer.Types nuget 包后,msvcr120.dll 和 SqlServerSpatial140.dll 文件已添加到解决方案中,但未添加到源代码管理中,这就是为什么我们在检查 TFS 后遇到类似问题(或实际情况并非如此) . 在构建服务器上构建之前,请确保将这些 dll 签入源代码管理。 (2认同)

Kri*_*lén 11

将dll复制C:\Users\<User>\.nuget\packages\Microsoft.SqlServer.Types\14.0.314.76\nativeBinaries\x86到项目中.右键单击该文件,然后单击"属性".将"复制到输出目录"设置为"始终复制".

  • 1) 此选项不适用于 NuGet 包 2) 部署到服务器时会发生什么? (3认同)

mat*_*tar 7

对于那些看到非常相似的错误的人,例如:

无法复制文件"...\SqlServerTypes\x64\SqlServerSpatial140.dll",因为找不到它

如果您通过NuGet安装了Microsoft.SqlServer.Types并且您的应用程序在本地工作,但是在通过Azure DevOps构建时出现错误,那么您只需要将dll添加到源代码控制.正如@ Pure.Krome所指出的,这些dll存在于本地:

在此输入图像描述

但请注意,默认情况下会忽略这些dll(左侧的红色图标).右键单击忽略的dll,Add Ignored File to Source Control…然后选择提交并推送更改,然后排队新的构建!注意:您的解决方案可能包含多个项目,每个项目可能都有自己的SqlServerTypes文件夹.

  • 根据您的 `.gitignore`,您可能需要添加以下两行:1) `!**/SqlServerTypes/x64/` 和 2) `!**/SqlServerTypes/x86/` (3认同)

Jar*_*ski 6

我的问题与 git 相关:解决方案的新克隆(保存在 TFS 上)似乎已损坏,尽管我的开发人员同事没有问题。就我而言,“重置”起到了作用:

  • 卸载 nuget Microsoft.SqlServer.Types 14.0.314.76
  • 清除/重建项目
  • 安装 nuget Microsoft.SqlServer.Types 14.0.314.76
  • 清除/重建项目


nig*_*fle 5

我遇到了这个问题,但我找到了解决方案。我有一些 System.Data.Entity.Spatial.DbGeometry 类型的新实体,当我运行 Add-Migration 命令时,我不断收到 System.DllNotFoundException: Unable to load DLL 'SqlServerSpatial140.dll' 。我已经从 nuget 安装了 SqlServerTypes 库,它在我的解决方案中放置了一个文件夹,如 @mattavatar 的帖子所示,但我仍然遇到异常。

对我来说解决这个问题的方法是将这些 DLL 复制到 C:\Windows\SysWOW64。这取决于您的计算机的体系结构和 IIS 配置。对于我来说,我在 64 位计算机上运行,​​但 IIS 配置为运行 32 位应用程序。在这种情况下,我必须将 32 位 dll 复制到 C:\Windows\SysWOW64。如果您运行的是 32 位计算机,则需要将 32 位 dll 复制到 C:\Windows\System32。如果您将 64 位 dll 复制到需要 32 位 dll 的位置,然后运行 ​​Add-Migration 命令,您将收到 System.BadImageFormatException。

希望这对某人有帮助。我花了太长时间试图弄清楚这一点。感谢 @pflous 的评论/sf/answers/2730674411/