C#やVB.netなどのソースに、「<%@ Import Namespace=”System.Linq” %>」が入っている場合、以下のようなエラーが出てコンパイルが通らないことがあります。
型または名前空間名 ‘Linq’ は名前空間 ‘System’ に存在しません。アセンブリ参照が不足しています。
The type or namespace name ‘Linq’ does not exist in the namespace ‘System’
System.Linqは .NET 3.5から有効で、古いアセンブリには含まれていません。
そのため、何度かVisualStudioや.NET Frameworkのインストールを繰り返した場合、複数のバージョンが混在することになり、不整合が起こったりするために、設定はきちんと行っているんだけど、うまくコンパイルが通らない。。という現象になってしまうようです。
そんな時の対処法をまとめておきます。
①まず、始めに、Projectのtargetのバージョンを確認しましょう。
プロジェクトの「プロパティ(Property) ⇒ ビルド(Build) ⇒ 対象とするFramework 」の部分が、「.NET Framework 3.5」になっているかを確認してください。
3.5より古いバージョンにはLinqは含まれないので、気をつけましょう。
②次に、アセンブリがきちんと参照されているかを確認します。
System.Linqのコンパイルに必要なアセンブリ参照は、「System.Core」です。
プロジェクトの「プロパティ(Property) ⇒ 参照設定 」の中に、「System.Core」が含まれているかを確認してください。
もし、含まれていない場合は、
・Binフォルダを右クリック
・参照の追加を選択
・タブ「.NET」を選択し、その中からコンポーネント「System.Core」を選択。
・OKを押して、参照を追加する
を行いましょう。
以上で、大体の場合はOKとなるはずです。
それでもダメな場合の手段
それでもダメな場合は、以下の2つを試してみてください。
「System.Core」だけでなく、「System.Data.Linq」を追加する。
⇒私の場合は解決しませんでした。
一度、targetの.NET Frameworkを4.0にしてコンパイルして、再度3.5に戻してコンパイルする。
⇒私の場合は、この手順で解決しました。。