这对我来说都是新的,所以请耐心等待......
我正在开发一个Visual Studio项目;它是一个返回一些数据的Web服务。
我刚尝试在我的本地计算机(IIS)上对Web服务器进行特定调用,我收到此错误:
无法加载DLL“SqlServerSpatial140.dll”:指定的模块 无法找到
在有人说之前 - 是的,显然我错过了这个DLL文件。我在网上搜索过,看不到我从哪里下载它(我安装了Microsoft SQL Server系统CLR类型(x64)和非X64。我安装了SQL Server 2014和2016的Microsoft System CLR类型)
有谁知道如何解决这个问题?有谁知道我是否可以从某个地方下载这个文件?
答案 0 :(得分:8)
将dll从C:\Users\<User>\.nuget\packages\Microsoft.SqlServer.Types\14.0.314.76\nativeBinaries\x86
复制到您的项目中。右键单击该文件,然后单击“属性”。将“复制到输出目录”设置为“始终复制”。
答案 1 :(得分:8)
安装Microsoft.SqlServer.Types
nuget包时,应该在root中创建一个新文件夹:
\SqlServerTypes
|_x64
|_x86
应该包含适当的dll&#39。如果更新,它也会自动设置为复制。
然后,确保您的应用加载适当的程序集:
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
不确定这是否适用于.NET Core。
答案 2 :(得分:6)
对于那些看到非常相似的错误的人,类似:
无法复制文件“ ... \ SqlServerTypes \ x64 \ SqlServerSpatial140.dll” 因为没有找到
如果通过NuGet安装了Microsoft.SqlServer.Types,并且您的应用程序在本地运行,但是在通过Azure DevOps进行构建时遇到错误,则只需将dll添加到源代码管理中。正如@ Pure.Krome指出的那样,这些dll在以下位置本地存在:
但是,请注意,默认情况下,这些dll被忽略(左侧的红色图标)。右键单击忽略的dll,然后选择Add Ignored File to Source Control…
,然后提交并推送更改,然后排队新的构建!注意:您的解决方案可能包含多个项目,并且每个项目可能都有自己的SqlServerTypes文件夹。
答案 3 :(得分:1)
我的问题与git有关:尽管我的其他开发人员都没遇到问题,但新的解决方案克隆(保留在TFS上)似乎已损坏。在我的情况下,“重置”就可以了:
答案 4 :(得分:1)
我通过在Package Manager控制台中发出以下命令来解决此问题:
Axios
输出中包含一些看上去很可怕的警告和错误,但最后表明该软件包已成功安装。并且构建错误消失了。
答案 5 :(得分:1)
对我有用的是转到下面的该文件位置,并将SqlServerSpatial240.dll复制到我的项目bin文件夹中。
C:\ Users <用户> .nuget \ packages \ microsoft.sqlserver.types \ 14.0.1016.290 \ nativeBinaries \ x64
答案 6 :(得分:1)
最终通过执行以下操作解决了问题。
卸载了 SqlServer.Types Nuget 包
重新安装了 SqleErver.Types Nuget 包(主要是为了确保 dll 是 正确上传)
验证您是否创建了 SqlServerTypes 文件夹,并验证您有 x64/x86 和 dll,如果它们没有加载,请右键单击,单击 git,然后单击添加
验证您在该文件夹中有 Loader.cs,打开它并验证它引用了正确的 dll。
最后,这一步是为我修复的,转到您的 Global.asax.cs 文件。在里面,Application_Start() 添加这一行
#if 调试
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~"));
#endif
答案 7 :(得分:0)
我遇到了类似的问题,我的子文件夹\SqlServerTypes
中的文件(描述为@ Pure.Krome安装)在NuGet.Config
中的设置丢失/丢弃了。我必须卸载并重新安装Nuget软件包Microsoft.SqlServer.Types
答案 8 :(得分:0)
非常感谢。它对我很好。我为此花了很多时间,但是你救了我! :)
我将此添加到了Global.asax.cs =>
`protected void Application_Start()
{
SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));`
然后在我的解决方案资源管理器=>中切换显示所有文件 并像Pure.Krone所说的那样将忽略的文件添加到源代码管理中。
答案 9 :(得分:0)
我遇到了这个问题,但是我找到了解决方案。我有一些具有System.Data.Entity.Spatial.DbGeometry类型的新实体,并且不断获取System.DllNotFoundException:运行Add-Migration命令时无法加载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位的位置,然后运行Add-Migration命令,则会得到System.BadImageFormatException。
希望这对某人有帮助。我花了太长时间试图解决这个问题。感谢@pflous的评论https://stackoverflow.com/a/39009634/6697928