C#アセンブリ参照エラー解説
「The located assembly's manifest definition does not match the assembly reference」エラーの日本語解説
具体的な原因
解決方法
アセンブリの再配置:
- アセンブリがプロジェクトの出力フォルダに正しく配置されていることを確認します。
- 必要に応じて、アセンブリを正しい場所にコピーします。
プロジェクトの再ビルド:
- プロジェクトを再ビルドして、変更を反映させます。
例
// プロジェクトで参照しているアセンブリが古い場合
// エラーが発生するコード
using System.Data.SqlClient;
// 参照設定を最新バージョンに更新して、エラーを解消
// 正しいコード
using System.Data.SqlClient; // 最新バージョンを参照
重要ポイント
- アセンブリのバージョン、カルチャ、パブリックキートークンは、アセンブリの同一性を識別するために重要な情報です。
- これらの情報が一致しない場合、コンパイラはアセンブリを正しく読み込むことができません。
- エラーを解決するには、参照設定やアセンブリの配置を適切に設定する必要があります。
例 1: バージョン不一致
// プロジェクトで参照しているアセンブリが古い場合
using System.Data.SqlClient; // 古いバージョンを参照
// エラーが発生するコード
SqlConnection connection = new SqlConnection("...");
- 問題:
System.Data.SqlClient
アセンブリのバージョンがプロジェクトで設定されているバージョンと異なるため、エラーが発生します。 - 解決: プロジェクトの参照設定で、最新バージョンの
System.Data.SqlClient
アセンブリを参照するように修正します。
例 2: カルチャ不一致
// プロジェクトで参照しているアセンブリのカルチャが異なる場合
using System.Globalization; // en-US カルチャを参照
// エラーが発生するコード
CultureInfo culture = CultureInfo.GetCultureInfo("ja-JP");
- 問題:
System.Globalization
アセンブリのカルチャがen-US
であるため、日本語のカルチャを取得しようとしたときにエラーが発生します。 - 解決: プロジェクトの参照設定で、
ja-JP
カルチャのSystem.Globalization
アセンブリを参照するように修正します。
例 3: パブリックキートークン不一致
// プロジェクトで参照しているアセンブリのパブリックキートークンが異なる場合
using MyCustomAssembly; // 異なるパブリックキートークンのアセンブリを参照
// エラーが発生するコード
MyCustomClass instance = new MyCustomClass();
- 問題:
MyCustomAssembly
アセンブリのパブリックキートークンがプロジェクトで設定されているパブリックキートークンと異なるため、エラーが発生します。 - 解決: プロジェクトの参照設定で、正しいパブリックキートークンの
MyCustomAssembly
アセンブリを参照するように修正します。
C#アセンブリ参照エラー解説
- アセンブリ: C#でコンパイルされた実行可能なファイルやライブラリファイルです。
- 参照: プロジェクトが他のアセンブリを使用するための設定です。
- マニフェスト: アセンブリのメタデータであり、アセンブリのバージョン、カルチャ、パブリックキートークンなどの情報を格納しています。
アセンブリの再配置
アセンブリのローカルコピー
アセンブリのパス指定
アセンブリのGAC登録
- 手順:
- プロジェクトを再ビルドします。
アセンブリのNuGetパッケージ使用
- 手順:
c# reference compiler-errors