无法加载 DLL 'SqlServerSpatial140.dll': 找不到指定的模块
Unable to load DLL 'SqlServerSpatial140.dll': The specified module could not be found
这对我来说是全新的,所以请多多包涵...
我正在做一个 Visual Studio 项目;这是一个 returns 一些数据的网络服务。
我刚刚尝试在我的本地计算机 (IIS) 上对 Web 服务器进行特定调用,但出现此错误:
Unable to load DLL 'SqlServerSpatial140.dll': The specified module
could not be found
在任何人说之前 - 是的,显然我丢失了这个 DLL 文件。我在网上搜索过,但看不到可以从哪里下载它(我安装了 Microsoft SQL Server System CLR Types (x64) 和非 X64。我有 Microsoft System CLR Types for SQL 已安装服务器 2014 和 2016)
有谁知道如何解决这个问题?有谁知道我是否可以从某个地方下载这个文件?
将 C:\Users\<User>\.nuget\packages\Microsoft.SqlServer.Types.0.314.76\nativeBinaries\x86
中的 dll 复制到您的项目中。右键单击该文件,然后单击属性。将 "Copy To Output Directory" 设置为 "Copy Always"。
安装 Microsoft.SqlServer.Types
nuget 包时,应在根目录中创建一个新文件夹:
\SqlServerTypes
|_x64
|_x86
其中应包含适当的 dll。它还会自动设置为 copy if newer.
然后,确保您的应用加载适当的程序集:
- 对于 ASP.NET Web 应用程序:
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
- 对于桌面应用程序/其他:
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
虽然不确定这是否适用于 .NET Core。
我的问题与 git 相关:一个新的解决方案克隆(保存在 TFS 上)似乎已损坏,但我的开发人员同事没有遇到任何问题。在我的例子中 "resetting" 成功了:
- 卸载 nuget Microsoft.SqlServer.Types 14.0.314.76
- 清除/重建项目
- 安装 nuget Microsoft.SqlServer.Types 14.0.314.76
- 清除/重建项目
我有一个类似的问题,我的文件来自子文件夹 \SqlServerTypes
(按照 @Pure.Krome 的描述安装),其中 missing/discarded 由我在 NuGet.Config
中的设置。我不得不卸载并重新安装 Nuget 包 Microsoft.SqlServer.Types
对于那些看到一组非常相似的错误的人,例如:
Could not copy the file "…\SqlServerTypes\x64\SqlServerSpatial140.dll"
because it was not found
如果您通过 NuGet 安装 Microsoft.SqlServer.Types 并且您的应用程序在本地运行,但在通过 Azure DevOps 构建时遇到错误,那么您只需将 dll 添加到源代码管理。正如@Pure.Krome 所指出的,这些 dll 存在于本地:
但是,请注意默认情况下这些 dll 将被忽略(左侧的红色图标)。右键单击忽略的 dll 和 select Add Ignored File to Source Control…
,然后提交并推送您的更改,然后将新构建加入队列!注意:您的解决方案可能包含多个项目,每个项目都可能有自己的 SqlServerTypes 文件夹。
非常感谢。它对我很有效。我在这上面浪费了很多时间,但你救了我! :)
我已将此添加到我的 Global.asax.cs
=>
`protected void Application_Start()
{
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));`
然后在我的解决方案资源管理器中 => 切换显示所有文件
并将忽略的文件添加到源代码管理...如 Pure.Krone 所述。
我通过在程序包管理器控制台中发出以下命令解决了这个问题:
Update-Package -Reinstall Microsoft.SqlServer.Types
输出包括一些看起来很可怕的警告和错误,但最后它表明包已成功安装。构建错误消失了。
我遇到了这个问题,但我找到了解决方案。我有一些 System.Data.Entity.Spatial.DbGeometry 类型的新实体,当我 运行 添加迁移命令时,我一直收到 System.DllNotFoundException: 无法加载 DLL 'SqlServerSpatial140.dll'。我已经从 nuget 安装了 SqlServerTypes 库,它在我的解决方案中放置了一个文件夹,如 @mattavatar 的 post 所示,但我仍然遇到异常。
为我修复的是将这些 DLL 复制到 C:\Windows\SysWOW64。这取决于您机器的体系结构和您的 IIS 配置。对于我,我在 64 位机器上 运行ning,但 IIS 配置为 运行 32 位应用程序。在这种情况下,我必须将 32 位 dll 复制到 C:\Windows\SysWOW64。如果您运行正在使用 32 位机器,您需要将 32 位 dll 复制到 C:\Windows\System32。如果您在需要 32 位 dll 的地方复制 64 位 dll,并且您 运行 添加迁移命令,您将获得 System.BadImageFormatException.
希望这对某人有所帮助。我花了太长时间试图弄清楚这一点。感谢@pflous 的评论
对我有用的是转到下面的这个文件位置并将 SqlServerSpatial240.dll 复制到我的项目 bin 文件夹。
C:\Users<用户>.nuget\packages\microsoft.sqlserver.types.0.1016.290\nativeBinaries\x64
通过执行以下操作最终解决了该问题。
卸载了 SqlServer.Types Nuget 包
重新安装了 SqleErver.Types Nuget 包(这样做主要是为了确保 dll
正确上传)
确认您已经创建了 SqlServerTypes 文件夹,并确认您有 x64/x86 并且里面有您的 dll,如果它们没有加载,右键单击,单击 git,然后单击添加
确认您在该文件夹中有一个 Loader.cs,打开它并确认它引用了正确的 dll。
最后,这一步为我解决了问题,转到您的 Global.asax.cs 文件。在里面,Application_Start() 添加这一行
#if DEBUG
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~"));
#endif
这对我来说是全新的,所以请多多包涵...
我正在做一个 Visual Studio 项目;这是一个 returns 一些数据的网络服务。
我刚刚尝试在我的本地计算机 (IIS) 上对 Web 服务器进行特定调用,但出现此错误:
Unable to load DLL 'SqlServerSpatial140.dll': The specified module could not be found
在任何人说之前 - 是的,显然我丢失了这个 DLL 文件。我在网上搜索过,但看不到可以从哪里下载它(我安装了 Microsoft SQL Server System CLR Types (x64) 和非 X64。我有 Microsoft System CLR Types for SQL 已安装服务器 2014 和 2016)
有谁知道如何解决这个问题?有谁知道我是否可以从某个地方下载这个文件?
将 C:\Users\<User>\.nuget\packages\Microsoft.SqlServer.Types.0.314.76\nativeBinaries\x86
中的 dll 复制到您的项目中。右键单击该文件,然后单击属性。将 "Copy To Output Directory" 设置为 "Copy Always"。
安装 Microsoft.SqlServer.Types
nuget 包时,应在根目录中创建一个新文件夹:
\SqlServerTypes
|_x64
|_x86
其中应包含适当的 dll。它还会自动设置为 copy if newer.
然后,确保您的应用加载适当的程序集:
- 对于 ASP.NET Web 应用程序:
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
- 对于桌面应用程序/其他:
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
虽然不确定这是否适用于 .NET Core。
我的问题与 git 相关:一个新的解决方案克隆(保存在 TFS 上)似乎已损坏,但我的开发人员同事没有遇到任何问题。在我的例子中 "resetting" 成功了:
- 卸载 nuget Microsoft.SqlServer.Types 14.0.314.76
- 清除/重建项目
- 安装 nuget Microsoft.SqlServer.Types 14.0.314.76
- 清除/重建项目
我有一个类似的问题,我的文件来自子文件夹 \SqlServerTypes
(按照 @Pure.Krome 的描述安装),其中 missing/discarded 由我在 NuGet.Config
中的设置。我不得不卸载并重新安装 Nuget 包 Microsoft.SqlServer.Types
对于那些看到一组非常相似的错误的人,例如:
Could not copy the file "…\SqlServerTypes\x64\SqlServerSpatial140.dll" because it was not found
如果您通过 NuGet 安装 Microsoft.SqlServer.Types 并且您的应用程序在本地运行,但在通过 Azure DevOps 构建时遇到错误,那么您只需将 dll 添加到源代码管理。正如@Pure.Krome 所指出的,这些 dll 存在于本地:
但是,请注意默认情况下这些 dll 将被忽略(左侧的红色图标)。右键单击忽略的 dll 和 select Add Ignored File to Source Control…
,然后提交并推送您的更改,然后将新构建加入队列!注意:您的解决方案可能包含多个项目,每个项目都可能有自己的 SqlServerTypes 文件夹。
非常感谢。它对我很有效。我在这上面浪费了很多时间,但你救了我! :)
我已将此添加到我的 Global.asax.cs =>
`protected void Application_Start()
{
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));`
然后在我的解决方案资源管理器中 => 切换显示所有文件 并将忽略的文件添加到源代码管理...如 Pure.Krone 所述。
我通过在程序包管理器控制台中发出以下命令解决了这个问题:
Update-Package -Reinstall Microsoft.SqlServer.Types
输出包括一些看起来很可怕的警告和错误,但最后它表明包已成功安装。构建错误消失了。
我遇到了这个问题,但我找到了解决方案。我有一些 System.Data.Entity.Spatial.DbGeometry 类型的新实体,当我 运行 添加迁移命令时,我一直收到 System.DllNotFoundException: 无法加载 DLL 'SqlServerSpatial140.dll'。我已经从 nuget 安装了 SqlServerTypes 库,它在我的解决方案中放置了一个文件夹,如 @mattavatar 的 post 所示,但我仍然遇到异常。
为我修复的是将这些 DLL 复制到 C:\Windows\SysWOW64。这取决于您机器的体系结构和您的 IIS 配置。对于我,我在 64 位机器上 运行ning,但 IIS 配置为 运行 32 位应用程序。在这种情况下,我必须将 32 位 dll 复制到 C:\Windows\SysWOW64。如果您运行正在使用 32 位机器,您需要将 32 位 dll 复制到 C:\Windows\System32。如果您在需要 32 位 dll 的地方复制 64 位 dll,并且您 运行 添加迁移命令,您将获得 System.BadImageFormatException.
希望这对某人有所帮助。我花了太长时间试图弄清楚这一点。感谢@pflous 的评论
对我有用的是转到下面的这个文件位置并将 SqlServerSpatial240.dll 复制到我的项目 bin 文件夹。
C:\Users<用户>.nuget\packages\microsoft.sqlserver.types.0.1016.290\nativeBinaries\x64
通过执行以下操作最终解决了该问题。
卸载了 SqlServer.Types Nuget 包
重新安装了 SqleErver.Types Nuget 包(这样做主要是为了确保 dll 正确上传)
确认您已经创建了 SqlServerTypes 文件夹,并确认您有 x64/x86 并且里面有您的 dll,如果它们没有加载,右键单击,单击 git,然后单击添加
确认您在该文件夹中有一个 Loader.cs,打开它并确认它引用了正确的 dll。
最后,这一步为我解决了问题,转到您的 Global.asax.cs 文件。在里面,Application_Start() 添加这一行
#if DEBUG
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~"));
#endif