【发布时间】:2016-12-18 22:15:03
【问题描述】:
我们的一个类库使用 Microsoft 空间类型,例如 DbGeography。在没有旧版本 SQL Server 和 Visual Studio 的干净机器上运行我们的应用程序时,我们会收到以下异常:
空间类型和功能不适用于此提供程序 因为程序集 'Microsoft.SqlServer.Types' 版本 10 找不到或更高。
解决方案显然是安装这个 nuget 包:
Install-Package Microsoft.SqlServer.Types
安装后,nuget 包会提供有关如何引用每个项目类型的 DLL 的说明:
要将使用空间数据类型的应用程序部署到未安装“SQL Server 的系统 CLR 类型”的计算机,您还需要部署本机程序集 SqlServerSpatial110.dll。
此程序集的 x86(32 位)和 x64(64 位)版本都已添加到您的项目中的 SqlServerTypes\x86 和 SqlServerTypes\x64 子目录下。如果未安装 C++ 运行时,还包括本机程序集 msvcr100.dll。
您需要添加代码以在运行时加载正确的这些程序集之一(取决于当前架构)。
ASP.NET 应用程序 对于 ASP.NET 应用程序,将以下代码行添加到 Global.asax.cs 中的 Application_Start 方法: SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
桌面应用程序 对于桌面应用程序,添加以下代码行以在执行任何空间操作之前运行: SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);
nuget 包项目站点没有响应,所以我不确定这是 2016 年现在使用的最佳方法。
我的问题是,我不知道如何从 ASP.NET Core 1.0 应用程序调用 LoadNativeAssemblies。 我们使用的是完整框架 (net461),而不是核心框架。
public class Startup
{
public Startup(IHostingEnvironment env)
{
...
SqlServerTypes.Utilities.LoadNativeAssemblies(env.WebRootPath);
...
}
}
在 ASP.NET 1.0 应用程序中包含 SqlServer.Types dll 文件的最佳方式是什么?
StackOverflow 上的相关问题 here 和 here。
非常感谢。
【问题讨论】:
-
你有什么收获吗?
-
没有任何进展。我仍然希望弄清楚...
-
出于好奇,如果不包括该行会怎样?在我的 .NET Framework 项目中,我不需要手动加载程序集,它运行良好。由于其他兼容性问题,我还没有设法在 .NET Core 上运行它。
-
这个问题解决了吗?如果没有,除了不使用 .net 核心,我们还能做些什么。
标签: asp.net entity-framework-6 asp.net-core asp.net-core-1.0