9

最近VS2012をインストールしました。VS2010で正常にコンパイルされるC++プロジェクト(.Net 4.0を使用)は、VS2012で認識されませんHashSet<T>。私は次の宣言で明示的にしようとさえしました:

System::Collections::Generic::HashSet< String^ >^ _reasons;

しかし、それはエラーを引き起こすだけです:

error C2039: 'HashSet' : is not a member of 'System::Collections::Generic

ドキュメントには、System.Collections.Genericにあると記載されています。C++コンパイラはそうは思いません。

それがどこに行ったのかについて何かアイデアはありますか?

4

1 に答える 1

13

HashSet <>は.NETに最近追加されたもので、.NET3.5で利用できるようになりました。名前空間は古く、mscorlib.dllには.NET2.0以降のSystem:: Collections :: Genericのクラス、Stack<>やQueue<>などのクラスが含まれていました。HashSet <>は、.NET 3.5の新しいアセンブリSystem.Core.dllに追加されました。彼らは、2.0アセンブリをいじくり回したくありませんでした。

したがって、エラーメッセージを回避するには、System.Coreへの参照を追加する必要があります。

このようなエラーが発生した場合は、必ずMSDNのドキュメントを参照してください。これは、アセンブリ参照が必要であることを示しています。

于 2012-11-26T21:19:26.133 に答える