Visual Studio 2012へプロジェクトやソリューションを移行するとアセンブリの参照ができなくなる
Visual Studio 2012へソリューションやプロジェクトを移行すると、移行後にアセンブリの参照ができなくなる場合があります。多くの場合自分で作成したアセンブリへの参照ができなくなります。
現象
"型または名前空間'(アセンブリ名)'が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。"
のエラーメッセージが表示されビルドが通らなくなります。ソリューションエクスプローラの[参照設定]ではアセンブリ参照はされています。
原因
参照先のアセンブリが、ビルドプログラムのアセンブリより新しい可能性があります。
Visual Studio 2010 の状態
- プロジェクト(ビルド対象) : .NET Framework 4.0
- アセンブリ (参照するアセンブリ) : .NET Framework 3.5
上記の状態ではビルドは問題なく通ります。
Visual Studio 2012 の状態
Windows 8にVisual Studio 2012をインストールしたデフォルトの状態では .NET Framework 3.5はインストールされていません。そのため、アセンブリのソリューションを読み込む際に.NET Framework 4.5へのコンバートを確認されます。ここで .NET Framework 4.5へコンバートした場合下記の状態となります。
- プロジェクト(ビルド対象) : .NET Framework 4.0
- アセンブリ (参照するアセンブリ) : .NET Framework 4.5
この状態でビルドすると参照するアセンブリのほうが、ビルドプロジェクトより新しい.NET Frameworkを利用するためビルドエラーとなります。
解決方法
いくつかありますが、プロジェクト側の対象フレームワークを.NET Framework 4.5にしてプロジェクトとアセンブリの両方を最新のバージョンにする方法があります。
- プロジェクト(ビルド対象) : .NET Framework 4.5
- アセンブリ (参照するアセンブリ) : .NET Framework 4.5
上記の状態でビルドすれば、ビルドは通ります。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用