型 '<typename1>' の値を '<typename2>' に変換できません。
更新 : 2007 年 11 月
エラー メッセージ
型 '<typename1>' の値を '<typename2>' に変換できません。型の不一致は、ファイル参照とアセンブリ '<assemblyname>' へのプロジェクト参照との混合によって生じた可能性があります。プロジェクト '<projectname1>' の '<filepath>' へのファイル参照を '<projectname2>' へのプロジェクト参照に置き換えてください。
プロジェクトでプロジェクト参照とファイル参照の両方が作成される場合、コンパイラは型が別の型に正しく変換されることを保証できません。
次の擬似コードは、このエラーが発生する可能性がある状況を示しています。
' ================ Visual Basic project P1 ================
' P1 makes a PROJECT REFERENCE to project P2
' and a FILE REFERENCE to project P3.
Public commonObject As P3.commonClass
commonObject = P2.getCommonClass()
' ================ Visual Basic project P2 ================
' P2 makes a PROJECT REFERENCE to project P3
Public Function getCommonClass() As P3.commonClass
Return New P3.commonClass
End Function
' ================ Visual Basic project P3 ================
Public Class commonClass
End Class
プロジェクト P1 は、プロジェクト P2 を経由するプロジェクト P3 への間接プロジェクト参照を作成し、一方でプロジェクト P3 への直接ファイル参照も作成します。commonObject の宣言では、P3 へのファイル参照を使用しますが、P2.getCommonClass の呼び出しでは P3 へのプロジェクト参照を使用します。
この状況で問題となるのは、ファイル参照では P3 の出力ファイル (通常は p3.dll) のファイル パスとファイル名を指定するのに対して、プロジェクト参照ではソース プロジェクト (P3) をプロジェクト名で識別することです。これが原因で、コンパイラは、2 つの参照のどちらもからも同じソース コードの P3.commonClass 型に到達することを保証できません。
通常、この状況は、プロジェクト参照とファイル参照が混在する場合に起こります。前記の例では、P1 が P3 を参照するためにファイル参照ではなく直接プロジェクト参照を作成すると、この問題は起こりません。
Error ID: BC30955
このエラーを解決するには
- ファイル参照をプロジェクト参照に変更します。
参照
処理手順
方法 : Visual Studio で参照を追加または削除する (Visual Basic)