在我的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
答案 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>