我们的一个类库使用像DbGeography这样的Microsoft空间类型。在没有旧版本的SQL Server和Visual Studio的干净机器上运行应用程序时,我们会收到以下异常:
因为找不到程序集'Microsoft.SqlServer.Types'版本10或更高版本,所以此提供程序不支持空间类型和函数。
解决方案似乎是安装该nuget包:
Install-Package Microsoft.SqlServer.Types
安装完成后,NuGet包会提供如何从每个项目类型中引用DLL的指令:
要将使用空间数据类型的应用程序部署到未安装“SQL Server的System 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文件?
非常感谢。