“Microsoft.SqlServer.Types.dll”和“Microsoft.SqlServer.Types.dll”

时间:2016-12-02 10:06:55

标签: c# sql-server

在我的Windows类库(由MVC网站使用)中,我安装了NugetPackage Microsoft.SqlServer.Types (Spatial)

现在,使用ado.net我试图通过执行以下操作来读取值:

protected SqlGeography MapSqlGeography(DbDataReader reader, string key)
{
      return reader[key] is DBNull ? null : (SqlGeography)reader[key];
}

如果我在此行中添加制动点并在visual studio观察窗口中输入:“reader [key]”,我可以看到类型为“object {Microsoft.SqlServer.Types.SqlGeography}”的正确Point(XXXX,XXX)

但是,一旦我尝试进行演员表演,我就会出现以下错误:

(SqlGeography)reader[key]   The type 'Microsoft.SqlServer.Types.SqlGeography' exists in both
 'Microsoft.SqlServer.Types.dll' and 
 'Microsoft.SqlServer.Types.dll'

主要的奇怪事实是dll完全一样......

据我所知,这个命名空间/类名只有一个“源”,不应该重复....

我的“使用”是:

using Microsoft.SqlServer.Types;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.SqlClient;
using System.Threading.Tasks;

关于如何解决这个问题的任何想法?感谢。

更新#1

我卸载了NugetPackage`Microsoft.SqlServer.Types(Spatial)',而是尝试了一个名为:'Microsoft.SqlServer.Types(Unofficial)',甚至在清除了所有以前的文件夹/文件并清理了“ bin / obj“,我仍然有完全相同的例外......

我现在只是看到了这个原因......任何想法都会非常感激。

更新#2

刚尝试使用extern alias destination;

return reader[key] is DBNull 
        ? null 
        : (destination.Microsoft.SqlServer.Types.SqlGeography)reader[key];

有例外:

Cannot cast 'reader[key]' (which has an actual type of 'Microsoft.SqlServer.Types.SqlGeography') 
to 
'Microsoft.SqlServer.Types.SqlGeography'
Microsoft.SqlServer.Types.SqlGeography

2 个答案:

答案 0 :(得分:2)

我今天遇到此错误,因为引用的库包含Nuget的Microsoft.SqlServer.Types的不同版本,而不是本地安装的版本。

您可以使用Nuget安装匹配版本来解决问题,或者如果不是选项,您可以使用绑定重定向。

例如:

Install-Package Microsoft.SqlServer.Types -Version 10.50.1600.1

通过查看package.json的依赖项来检查您的特定版本,或者您可以直接检查DLL属性。

答案 1 :(得分:0)

尝试在您的web.config文件中使用它:

 <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
      <bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
  </dependentAssembly>