В моей библиотеке классов Windows (потребляемой веб-сайтом MVC) у меня есть установлен NugetPackage Microsoft.SqlServer.Types (Spatial)
.Тип «Microsoft.SqlServer.Types.SqlGeography» существует как в «Microsoft.SqlServer.Types.dll», так и «Microsoft.SqlServer.Types.dll»
Теперь, используя ADO.NET Я пытаюсь прочитать значение, выполнив:
protected SqlGeography MapSqlGeography(DbDataReader reader, string key)
{
return reader[key] is DBNull ? null : (SqlGeography)reader[key];
}
Если добавить тормозную точку в этой линии и в визуальном окне студии часы я типа: «читателя [ключ ]», я могу видеть правильную точку (XXXX, XXX) типа:„object {Microsoft.SqlServer.Types.SqlGeography}
“
Но, как только я пытаюсь сделать бросок у меня есть следующая ошибка:
(SqlGeography)reader[key] The type 'Microsoft.SqlServer.Types.SqlGeography' exists in both
'Microsoft.SqlServer.Types.dll' and
'Microsoft.SqlServer.Types.dll'
Main странно факт та Тл библиотеки являются точно так же ...
Насколько я знаю, у меня есть только один «источник» для этого имени пространства имен/класса, он не должен быть повторен ....
Моим «usings» являются:
using Microsoft.SqlServer.Types;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.SqlClient;
using System.Threading.Tasks;
Любые идеи о том, как это решить? Благодарю.
Update # 1
Я удалил NugetPackage `Microsoft.SqlServer.Types (Spatial)» и вместо этого попробовал один под названием: 'Microsoft.SqlServer.Types (Unofficial)' и даже после очистки все предыдущие папки/файлы, а также очистка «bin/obj», я продолжаю иметь то же самое исключение ....
Я просто сейчас вижу причину этого сейчас .... любые идеи были бы действительно оценили.
Update # 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
Является ли dll включенным в ваш проект дважды как-то? –
У меня была эта проблема однажды в проекте azure db, и это было связано с неверной версией этой DLL, которую я использовал. Сравните версии и убедитесь, что вы используете правильный. – Rafal
У вас есть ссылки на две разные версии одной и той же сборки. Без применения псевдонимов система не имеет способа узнать, к какому конкретному типу (типам) вы обращаетесь, поскольку множественные сборки могут содержать типы из тех же пространств имен, включая типы с одинаковыми именами в пределах тех же пространств имен. (Тем более, что здесь, где у вас есть две разные версии одной и той же сборки, не удивительно, что они содержат типы одинаковых имен) –