私のWindowsクラスライブラリ(MVC Webサイトで消費されます)では、 NugetPackage Microsoft.SqlServer.Types (Spatial)
をインストールしました。'Microsoft.SqlServer.Types.SqlGeography'型は、 'Microsoft.SqlServer.Types.dll'と 'Microsoft.SqlServer.Types.dll'の両方に存在します。
さて、私が実行して値を読み取るしようとしていますado.netを使用して:私は、この行にとVisual Studioのウォッチウィンドウにブレークポイントを追加した場合
protected SqlGeography MapSqlGeography(DbDataReader reader, string key)
{
return reader[key] is DBNull ? null : (SqlGeography)reader[key];
}
は私が入力します。「キーリーダーを[奇妙な
(SqlGeography)reader[key] The type 'Microsoft.SqlServer.Types.SqlGeography' exists in both
'Microsoft.SqlServer.Types.dll' and
'Microsoft.SqlServer.Types.dll'
メイン:私は、私は次のエラーを持っているキャストを作ってみるとすぐに、object {Microsoft.SqlServer.Types.SqlGeography}
『
しかし:]」、私は正しいポイントタイプの(XXXX、XXX)を見ることができます』事実はそれですDLLをTとこれまで私は、私はこれだけ名前空間/クラス名に対して1つの「ソース」を持って、それは重複してはならない....
マイ「usings」を知っている...まさに
同じです次のとおりです。
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(空間)をアンインストール」と呼ばれる代わりに、1試してみました: 'Microsoft.SqlServer.Types(非公式)' をしても、すべての洗浄後以前のフォルダ/ファイルを削除して "bin/obj"をクリーンアップしても、まったく同じ例外が続きます。
私は今、感謝。
Cannot cast 'reader[key]' (which has an actual type of 'Microsoft.SqlServer.Types.SqlGeography')
to
'Microsoft.SqlServer.Types.SqlGeography'
Microsoft.SqlServer.Types.SqlGeography
プロジェクトに含まれるDLLは何とか2回ありますか? –
私はazure dbプロジェクトでこの問題を一度経験しました。これは、使用していたdllの無効なバージョンに関連していました。バージョンを比較し、正しいバージョンを使用していることを確認してください。 – Rafal
同じアセンブリの異なる2つのバージョンへの参照があります。エイリアスを適用しないと、同じ名前空間内に同じ名前の型を含む複数のアセンブリに同じ名前空間の型を含めることができるため、システムは参照している特定の型を知る方法がありません。 (特に、同じアセンブリの2つの異なるバージョンがある場合は、同じ名前の型が含まれていることに驚くことではありません) –