1. ホーム
  2. c#

[解決済み] 名前空間が認識されない(存在するにもかかわらず) [重複]

2022-04-24 10:45:37

質問

このエラーが発生します。

型名または名前空間名 'AutoMapper' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が不足していますか?)。

面白いことに、私のプロジェクトにはすでにそのリファレンスがあるのです。

そして、これが私のコードです。

using System.Collections.Generic;
using DataContract;
using SelectorDAL;
using AutoMapper;

namespace SpecimenSelect
{
    public class SpecimenSelect : ISpecimenSelect
    {
        public SpecimenSelect()
        {
            SetupMaps();
        }

        private static void SetupMaps()
        {
            Mapper.CreateMap<SpecimenDetail, SpecimenDetailContract>();
        }

もう1つ不思議なのは、私のソリューションには他に2つのプロジェクトがあり、どちらもAutoMapperを使用していて、全く同じAutoMapper.dllファイルを参照していることです。 これらは両方とも完全に正常に動作します。

以下はその1つのスクリーンショットです。

そしてこれがそのコードです(うまくコンパイルされています)。

using System.Collections.Generic;
using AutoMapper;
using DataContract;
using SelectorDAL;

namespace PatientSelect
{

    public class PatientSelect : IPatientSelect
    {
        public PatientSelect()
        {
            SetupMaps();
        }

        private void SetupMaps()
        {
            Mapper.CreateMap<Patient, PatientContract>();
            Mapper.CreateMap<OrderedTest, OrderedTestsContract>();
            Mapper.CreateMap<Gender, GenderContract>();
        }

どちらのリファレンスも、プロパティページに同じデータが表示されているようです。

何が足りないのでしょうか?

試してみました。

  1. Visual Studioを再起動する
  2. usingステートメントを使用しない参照(つまり AutoMapper.Mapper.CreateMap )
  3. クリーン&リビルド

他にアイデアがあれば教えてください。

解決方法は?

プロジェクトが.NET Framework 4 Client Profileを使用するように設定されていないことを確認します。

プロジェクト(ソリューションではありません)を右クリックして プロパティ -> アプリケーション -> 対象フレームワーク . ターゲットフレームワークは、そのページ上のドロップダウンです。

これはVisual Studioの問題です(バグと呼んでもいいくらいです)。 AutoMapperは、.NET Framework 4 Client Profileから除外されているアセンブリを必要とします。 あなたのプロジェクトはそのバージョンのフレームワークを使用しているため、問題が発生します。

例えば、4.5 をターゲットとするプロジェクトが 4.5.1 をターゲットとするプロジェクトを参照すると、この同じエラーがビルド プロセスに伝播されます。

エラーメッセージは、明らかに参照しているアセンブリを参照するように指示するので、なぜビルドできないのか、合理的な説明がありません。