名前空間が認識されません(存在するにもかかわらず) [重複] 質問する

名前空間が認識されません(存在するにもかかわらず) [重複] 質問する

次のエラーが発生します:

型または名前空間名 '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 つの奇妙な点は、ソリューション内に AutoMapper を使用し、まったく同じ AutoMapper.dll ファイルを参照している 2 つのプロジェクトがあることです。どちらも完全に正常に動作します。

以下にスクリーンショットを示します。

プロジェクトザットワークス

そして、そのコードは次のとおりです(問題なくコンパイルされます)。

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. クリーンアップと再構築

他に何かアイデアはありますか?

ベストアンサー1

プロジェクトが .NET Framework 4 クライアント プロファイルを使用するように設定されていないことを確認してください。

これを確認/変更するには、プロジェクト(ソリューションではない)を右クリックし、プロパティ->応用->ターゲットフレームワークターゲット フレームワークはそのページのドロップダウンです。

これは Visual Studio の問題です (バグとさえ言えるでしょう)。AutoMapper には、.NET Framework 4 クライアント プロファイルから除外されているアセンブリが必要です。プロジェクトではそのバージョンのフレームワークを使用しているため、問題が発生します。

参照しているプロジェクトの .NET Framework バージョンが参照元のプロジェクトよりも高い場合、同様のエラーがビルド プロセスに伝播します。つまり、4.5 をターゲットとするプロジェクトが 4.5.1 をターゲットとするプロジェクトを参照すると、同じエラーが発生します。

このような状況が発生した場合、より適切なエラー メッセージが必要です。エラー メッセージでは、明確に参照されているアセンブリを参照するように指示されているため、ビルドされない理由について合理的な説明がないためです。

おすすめ記事