アセンブリ参照に関連するエラーと警告を解決する

  • CS0012: 型 'type' は、参照されていないアセンブリで定義されます。アセンブリ 'assembly' への参照を追加する必要があります。
  • CS0234: 型または名前空間の名前が名前空間に存在しません (アセンブリ参照がありませんか?
  • CS0246: 名前の型または名前空間が見つかりませんでした (using ディレクティブまたはアセンブリ参照が不足しています)
  • CS0400: 型または名前空間の名前がグローバル名前空間に見つかりませんでした (アセンブリ参照がありませんか?
  • CS1068: 型名がグローバル名前空間に見つかりませんでした。この型は別のアセンブリに転送されています。そのアセンブリへの参照を追加することを検討してください。
  • CS1069: 型名が名前空間に見つかりませんでした。この型は別のアセンブリに転送されています。そのアセンブリへの参照を追加することを検討してください。
  • CS1070: 型名が見つかりませんでした。この型は別のアセンブリに転送されています。そのアセンブリへの参照を追加することを検討してください。
  • CS1704: 同じ単純な名前のアセンブリが既にインポートされています。参照の 1 つを削除するか、署名してサイド バイ サイドを有効にしてみてください。
  • CS1714: この型の基底クラスまたはインターフェイスを解決できなかったか、無効です。
  • CS1760: 複数のアセンブリが同じメタデータを参照しますが、リンク参照 (/link オプションを使用して指定) は 1 つだけです。参照の 1 つを削除することを検討してください。
  • CS7008: アセンブリ名は予約されており、対話型セッションでは参照として使用できません。
  • CS7068: 型要求への参照は、このアセンブリで定義されていますが、ソースまたは追加されたモジュールでは定義されていません。
  • CS7069: 別のアセンブリで定義されている型要求への参照が見つかりませんでした。
  • CS7071: アセンブリ参照が無効であり、解決できません。
  • CS7079: 型は、追加されていないモジュールで定義されています。モジュールを追加する必要があります。
  • CS8090: 参照されるアセンブリにエラーがあります。
  • CS8203: アセンブリ名が無効です。
  • CS8206: アセンブリ 'assembly name' のモジュール 'module name' は、型 'type name' を複数のアセンブリ ('first assembly name' と 'second assembly name') に転送しています。
  • CS8356: 定義済みの型 'type name' は、複数の参照先アセンブリで宣言されています:'first assembly name' と 'second assembly name'
  • CS9286: 型に定義が含まれておらず、レシーバー型のアクセス可能な拡張メンバーが見つかりません (using 宣言またはアセンブリの参照がありませんか?)

さらに、この記事では次の警告について説明します。

  • CS1683: 型 'Type Name' への参照は、このアセンブリで定義されていますが、ソースまたは追加されたモジュールでは定義されていません。

参照がありません

次のエラーと警告は、アセンブリ参照が見つからないことを示しています。

  • CS0012: 型 'type' は、参照されていないアセンブリで定義されます。アセンブリ 'assembly' への参照を追加する必要があります。
  • CS0234: 型または名前空間の名前が名前空間に存在しません (アセンブリ参照がありませんか?
  • CS0246: 名前の型または名前空間が見つかりませんでした (using ディレクティブまたはアセンブリ参照が不足しています)
  • CS1714: この型の基底クラスまたはインターフェイスを解決できなかったか、無効です。
  • CS9286: 型に定義が含まれていないため、レシーバー型にアクセス可能な拡張メンバーが見つかりませんでした (using 指示またはアセンブリ参照が不足している可能性がありますか?)

これらのコンパイラ エラーは、コード内の次のいずれかの問題を示しています。

  • プロジェクトは、必要なアセンブリを参照しません。 このエラーを修正するには、 必要なアセンブリへの参照を追加します。
  • 型の名前のスペルを間違えました。 型の名前を確認します。
  • System.Typeやtypeof演算子など、の名前が予期されるisしました。
  • 型がグローバル名前空間にない場合 は、グローバル スコープ演算子 (::) を使用しました。
  • 拡張機能メンバーにアクセスしていて、名前空間が using ディレクティブで指定されていないか、拡張機能を含むアセンブリを参照していません。

アセンブリが参照されるように見える場合

アセンブリがプロジェクトで参照されているのに CS0012 が引き続き表示される場合は、次のトラブルシューティング手順を試してください。

  • パッケージの復元: dotnet restore を実行して、特に NuGet パッケージのインストールまたはアンインストール後に、すべてのパッケージ参照が適切に解決されるようにします。

  • NuGet パッケージのキャッシュをクリアして復元します。

    dotnet nuget locals all --clear
    dotnet restore
    
  • バージョンの競合を確認する: 参照されているすべてのアセンブリで互換性のあるバージョンが使用されていることを確認します。 ビルド出力でバインド リダイレクトの警告を確認してください。

  • ソリューションをクリーンアップし、古い参照が残らないようにリビルドします。

    dotnet clean
    dotnet build
    
  • パッケージの整合性を確認する: パッケージ操作後にエラーが発生した場合は、パッケージを削除して再インストールすることで、パッケージが正しくインストールされていることを確認します。

    dotnet remove package [PackageName]
    dotnet add package [PackageName]
    

型の転送

  • CS1068: 型名がグローバル名前空間に見つかりませんでした。この型は別のアセンブリに転送されています。そのアセンブリへの参照を追加することを検討してください。
  • CS1069: 型名が名前空間に見つかりませんでした。この型は別のアセンブリに転送されています。そのアセンブリへの参照を追加することを検討してください。
  • CS1070: 型名が見つかりませんでした。この型は別のアセンブリに転送されています。そのアセンブリへの参照を追加することを検討してください。
  • CS8206: アセンブリ 'assembly name' のモジュール 'module name' は、型 'type name' を複数のアセンブリ ('first assembly name' と 'second assembly name') に転送しています。

CS1068、CS1069、および CS1070 は、別のアセンブリに転送された型を参照するエラーを示します。 エラー メッセージに示されているアセンブリへの参照を追加します。

CS8206 は、参照されるアセンブリまたはモジュールで競合する型フォワーダー メタデータを示します。 同じ型が複数の宛先アセンブリに転送されます。 型を 1 つの宛先に転送する、修正または再構築された依存関係を使用してください。 パッケージとアセンブリのバージョンに一貫性があることを確認するか、競合するメタデータを導入する参照を削除します。 ソースエイリアスまたはローカル型宣言に関連しない変更では、参照されるメタデータは修正されません。

参照の重複

次のエラーは、重複するアセンブリ参照を示しています。

  • CS1704: 同じ単純な名前のアセンブリが既にインポートされています。参照の 1 つを削除するか、署名してサイド バイ サイドを有効にしてみてください。
  • CS1760: 複数のアセンブリが同じメタデータを参照しますが、リンク参照 (/link オプションを使用して指定) は 1 つだけです。参照の 1 つを削除することを検討してください。
  • CS8356: 定義済みの型 'type name' は、複数の参照先アセンブリで宣言されています:'first assembly name' と 'second assembly name'

これらのエラーを修正するには、参照の 1 つを削除するか、重複を解決します。 重複の原因は次のとおりです。

  • 同じ名前の複数の符号なしアセンブリ。
  • プロジェクトは、同じアセンブリの複数のバージョンを参照します。

CS8356 の場合、同じ定義済みのランタイム型を定義する重複参照または互換性のない参照を削除または置換します。 プロジェクトが 1 つのコヒーレント フレームワークと参照アセンブリ セットをターゲットにしていることを確認します。 定義済みの型の別のソース定義を追加しないでください。

アセンブリ参照が無効です

次のエラーは、アセンブリ参照が無効であることを示しています。

  • CS7008: アセンブリ名は予約されており、対話型セッションでは参照として使用できません。
  • CS7068: 型要求への参照は、このアセンブリで定義されていますが、ソースまたは追加されたモジュールでは定義されていません。
  • CS7069: 型への参照は別のアセンブリで定義されていると主張されていますが、見つかりませんでした。
  • CS7071: アセンブリ参照が無効であり、解決できません。
  • CS7079: 型は、追加されていないモジュールで定義されています。モジュールを追加する必要があります。
  • CS8090: 参照されるアセンブリにエラーがあります。
  • CS8203: アセンブリ名が無効です。

次の警告は、無効な参照アセンブリも示しています。

  • CS1683: 型 'Type Name' への参照は、このアセンブリで定義されているとされていますが、ソースや追加されたモジュールでは定義されていません

アセンブリ名のスペルが正しいことを確認します。 参照されるアセンブリ ファイルが無効である可能性があります。