네임 스페이스가 인식되지 않습니다 (있는 경우에도)


145

이 오류가 발생합니다.

유형 또는 네임 스페이스 이름 'AutoMapper'를 찾을 수 없습니다 (사용 지시문 또는 어셈블리 참조가 누락 되었습니까?)

재미있는 점은 이미 프로젝트에 해당 참조가 있다는 것입니다.

ProjectThatFails

그리고 이것은 내 코드입니다.

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>();
        }

다른 이상한 점은 내 솔루션에 AutoMapper를 사용하고 정확히 동일한 AutoMapper.dll 파일을 참조하는 두 개의 다른 프로젝트가 있다는 것입니다. 둘 다 완벽하게 작동합니다.

다음은 하나의 스크린 샷입니다.

ProjectThatWorks

그리고 여기에 코드가 잘 컴파일되어 있습니다.

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
참조 경로가 올바르지 않습니까? 아마도 그것은 절대 경로로 추가되었지만 DLL은 이후 이동 되었습니까?
kevingessner

답변:


259

프로젝트가 .NET Framework 4 Client Profile을 사용하도록 설정되어 있지 않은지 확인하십시오.

솔루션이 아닌 프로젝트를 마우스 오른쪽 단추로 클릭하여 특성을 확인 / 변경하고 특성 -> 응용 프로그램 -> 대상 프레임 워크를 선택하십시오 . 대상 프레임 워크는 해당 페이지의 드롭 다운입니다.

이것은 Visual Studio의 문제입니다 (버그라고 부르기까지합니다). AutoMapper에는 .NET Framework 4 Client Profile에서 제외 된 어셈블리가 필요합니다. 프로젝트가 해당 버전의 프레임 워크를 사용하고 있기 때문에 중단됩니다.

참조하는 프로젝트의 .NET Framework 버전이 참조하는 프로젝트보다 높은 경우 유사한 오류가 빌드 프로세스로 전파됩니다. 즉, 프로젝트 타겟팅 4.5.1을 참조하는 4.5를 대상으로하는 프로젝트에서도 이와 동일한 오류가 발생합니다.

오류 메시지가 명확하게 참조한 어셈블리를 참조하도록 지시 할 때 빌드되지 않는 이유에 대한 합리적인 설명이 없기 때문에 이러한 상황이 발생하면 더 나은 오류 메시지가 필요합니다.


7
이것이 바로 문제였습니다! 감사합니다! 이 오류가 매우 잘못되었다는 데 동의합니다. 또한 클라이언트 프로파일이 새 프로젝트의 기본값 인 이유를 알 수 없습니다. 대부분의 컴퓨터는 완전한 .net 프레임 워크를 가지고 있습니까? (또는 MS는 Windows Update에 클라이언트 프레임 워크를 넣었습니까?) 어쨌든, 내가 개발 한 모든 컴퓨터에는 전체 프레임 워크가 있습니다. 새 프로젝트의 기본값을 변경하는 방법이 있었으므로 이처럼 나에게 물 렸습니다. 어쨌든. 다시 감사합니다! 나는 붙어 있었고 나는 거기를 보지 않았다.
Vaccano

나는 정확히 같은 문제가 있었다! 참조를 올바르게 추가했지만 Windows 서비스 프로젝트에서 유형이 인식되지 않았습니다. 대상 프레임 워크를 .NET Framework 4 Client Profile에서 .NET Framework 4로 변경했습니다. 또한 컴파일하려면 참조를 다시 추가해야했습니다. Visual Studio 2010에서 문제가되는 것 같습니다. 부다페스트에서 감사와 인사를드립니다.
Varga Tamas

좋은 하나, 이것은 나에게도 일어났다. 내 테스트 프로젝트는 참조 된 네임 스페이스가 있지만 인식하지 못했습니다. 라이브러리를 .NET 4.5 플랫폼으로 변경했지만 테스트 프로젝트는 4.0으로 유지 되었기 때문입니다. 어쨌든, 당신의 대답은 나를 올바른 길로 인도합니다. 이것을 알아 내 주셔서 감사합니다.
Jukka Puranen

.Net 3.5 클라이언트 프로파일 프로젝트에서 .Net 2.0 어셈블리를 사용하려고 할 때도 같은 문제가 발생했습니다. 3.5 전체 프로필로 전환하면 문제가 해결됩니다.
Palani

내 문제는 비슷했다. 프로젝트는 다른 프레임 워크 버전을 사용하고있었습니다. 기본 프로젝트는 4.5를 사용하고 새로 만든 프로젝트는 4.5.1을 사용했습니다. 오류 메시지가 더 좋으면 좋을 것입니다.
L_7337

27

바보 같은 질문을하겠습니다 : automapper.dll 파일 이 두 개있을 수 있습니까? 하나는 AutoMapper네임 스페이스가 있고 다른 하나는 없는가? 두 프로젝트의 경로를 확인하십시오.

또한 using명령 순서 가 다르다는 것을 알았습니다 . 중요하지 않지만 셔플을 시도 했습니까?


18

클래스가 컴파일되지 않으면 프로젝트에 있더라도 다음을 확인하십시오.

  1. 클래스 이름이 정확히 같은지 여부
  2. 네임 스페이스가 정확히 같은지 여부
  3. 클래스 속성이 빌드 조치를 표시하는지 여부 = 컴파일

6
탐색기로 .cs 파일을 복사 한 다음 프로젝트에 포함 시켰습니다. VS.Net은 빌드 작업을 "컴파일"대신 "콘텐츠"로 설정하여 네임 스페이스를 인식하지 못했습니다. 잘 잡아!
AUSteve

1
추가-> 클래스 기능을 통해 클래스를 추가하고 빌드 조치를 컨텐츠로 설정했습니다. 왜 궁금한가요? 이것은 어쨌든 나에게 도움이되었지만 아주 간단하지만 전에는 없었습니다. 그렇기 때문에 내가 거기를보고 귀찮게하지 않았고 대신 Google을 검색했습니다.
Anomaly

14

다른 모든 답변이 도움이되지 않으면 가장 간단한 솔루션이어야합니다.

나는 대답 중 내 설정에 어떤 문제가 있는지 찾고 있었고, 모두 시도했지만 아무것도 작동하지 않았으며 Visual Studio 2018Microsoft에 의해 개발 되었음을 깨달았습니다 . 그래서 저는 대부분의 사람들이하는 일을했습니다.

Visual Studio를 다시 시작 했으며 작동했습니다.


나를 위해 일했지만 다시 시작하기 전에 bin 및 obj 폴더를 삭제했습니다.
Chandan YS

내년 동안 stackoverflow에서 이것은 버그에 대한 가장 좋은 짠 반응 (실제로 해결책을 제공함)이며 처음 다시 시작할 때 작동했습니다. 불면증 ftw!
콜린 화이트

12

파일이 들어있는 폴더 를 마우스 오른쪽 버튼으로 클릭하고 프로젝트에서 제외 를 선택한 다음 마우스 오른쪽 버튼을 다시 클릭하고 프로젝트에 포함을 선택 하여이 문제를 해결했습니다 (먼저 제외 된 폴더를 표시하려면 모든 파일 표시 를 활성화해야 함 )


수많은 파일에 대해이 오류가 발생하여 파일을 제거하고 다시 포함하면 전체 솔루션의 문제가 해결되었습니다.
Daryl

무엇을 마우스 오른쪽 버튼으로 클릭? "프로젝트에서 제외"는 솔루션 탐색기에서 폴더를 제거합니다. "프로젝트에 포함"은 없습니다
Florian Winter

2
@FlorianWinter 제외 된 폴더를 마우스 오른쪽 버튼으로 클릭하려면 모든 파일 표시 가 있어야 합니다. 솔루션 탐색기를 통해 켜거나 끌 수 있으며 모두 접기 버튼 옆에 있습니다.
user3251328

이유를 모르지만 VS2019에서 새 클래스가 포함 된 새 파일을 프로젝트에 추가했지만 새 클래스가 포함 된 프로젝트에 대한 참조가 이미있는 다른 프로젝트에서 해당 클래스의 새 인스턴스를 만들 수 없었습니다. ..¯\_(ツ)_/¯
matt.fc

7

VS2010에서 인식되지 않는 참조와 비슷한 문제가 있으며 여기의 답변으로 수정할 수 없습니다.

내 솔루션의 문제는 참조 된 프로젝트가있는 경로의 확장과 관련이 있습니다. SVN을 사용하면서 일부 테스트를 수행하기 위해 저장소의 분기를 만들었고 해당 분기는 경로 구조에서 두 레벨을 증가 시켰으므로 경로가 너무 길어서 창에서 사용할 수 없었습니다. 이것은 오류를 발생시키지 않았지만 프로젝트 참조의 네임 스페이스를 인식하지 못했습니다. 경로가 더 작도록 프로젝트 위치를 수정하면 모든 것이 잘되었습니다.


2
이것은 우리에게도 문제였으며 문제를 일으키는 경로 길이였습니다. VS는 우리가 얻은 오류가 오도 된 것처럼 더 나은 오류를 제공하는 더 나은 작업을 수행해야합니다.
부두교 어린이

당신의 대답 덕분에 아이디어가 떠 올랐습니다. 프로젝트의 경로를보고 소스 트리에서 만든 루트 폴더의 이름에 _ 대신 "% 20"이 있다는 것을 깨달았습니다. 나는 그것을 _ (으)로 변경했으며 모든 것이 정상적으로 작동합니다.
페르난도 울프 19

5

필자의 경우 참조 된 dll은 더 높은 버전의 .Net Framework에서 빌드되었습니다. 참조를 추가 한 후 사용할 수 있습니다. 그러나 빌드를하자마자 'missing reference'오류가 나타납니다. dll을 새로 고치면 오류가 발생하지만 절대 빌드되지 않습니다. 이 게시물을 통해 프레임 워크 버전을 확인 했으므로 참조 된 프로젝트를 동일한 버전으로 빌드하여 해결할 수 있습니다.


3

프로젝트의 유형 테이블이 올바르지 않은 상태 일 수 있습니다. 참조를 제거 / 추가하려고 시도했지만 작동하지 않으면 다른 프로젝트를 만들고 코드를 가져 와서 작동하는지 확인하십시오.

VS 2005를 사용하는 동안이 문제가 발생하여 MS는 지금까지 특정 문제를 해결했을 것으로 기대합니다 .


이 문제를 해결할 수 있습니까?
Fran_gg7

3

이 질문은 이미 수여되었지만 아직 설명하지 않은 추가 세부 정보가 있습니다.

나도 프로젝트 B가 프로젝트 A에서 참조되었지만이 프로젝트 B에서 네임 스페이스가 프로젝트 A에서 인식되지 않은이 동작을하고있었습니다. 프로젝트의 경로 (A와 B 모두)를 줄임으로써 참고 문헌이 보이고 사용 가능해졌습니다.

훨씬 적은 경로 깊이에서 프로젝트 C를 작성하여이 이론을 테스트했습니다. 프로젝트 A에서 프로젝트 C를 참조했습니다. 참조가 올바르게 작동했습니다. 그런 다음 솔루션에서 프로젝트 C를 제거하고 프로젝트 C와 동일한 경로로 프로젝트 C를 옮기고 솔루션에 프로젝트 C를 다시 추가하고 컴파일하려고했습니다. 그런 다음 C 객체를 더 이상 볼 수 없었습니다.


2

내 경우에는 클래스 라이브러리를 복사하고 프로젝트 속성의 "어셈블리 이름"을 변경하지 않았으므로 한 DLL이 다른 DLL을 덮어 썼습니다.


2

이것은 Visual Studio 2019에서 나에게 일어났습니다. 저에게 솔루션에서 다른 프로젝트를 참조하려고했습니다. 다른 사람을 돕기 위해 내가 취한 조치는 다음과 같습니다.

  1. 참조하려는 프로젝트가 참조 아래에 나열되어 있는지 확인
  2. 두 프로젝트 모두 올바른 버전의 .NET Framework를 사용하고 있는지 확인
  3. 프로젝트 구축 (녹색 "시작"화살표 클릭)

1 단계와 2 단계 후에도 여전히 오류가 발생하여 혼란 스러웠지만 프로젝트를 빌드하면 문제가 해결 된 것 같습니다.


1

컴파일하는 동안 문제가 없었지만 실행 중에 네임 스페이스 / 메소드가 발견되지 않는 비슷한 문제에 직면했으며, 그 이유는 내가 참조 한 어셈블리가 GAC에 배포 된 후 변경 되었기 때문에 어셈블리를 참조했을 때 나타납니다. Visual Studion에서는 가장 최신 버전을 사용했지만 런타임 동안 GAC의 버전이 사용되었습니다.


1

제 경우에는 VS 2015에서만 오류가 발생했습니다. VS 2017에서 프로젝트를 열 때 오류가 사라졌습니다.


1

미친. 알아.

모든 옵션을 시도했습니다. 생성 된 DLL을 다시 시작, 정리 및 수동으로 확인

Options에서 MSBuild의 상세를 "Detailed"로 설정하여 작동하도록했습니다.


나를 위해 구성 이름이 x86 일 때 PlatformTarget에서 AnyCpu로 설정된 빌드 구성이었습니다. 이 설정은 그것을 찾는 데 도움이되었습니다.
Dbl December

1

이 질문은 이미 원래 포스터에 대해 답변되었지만 누군가 MS-Test 프로젝트에서이 문제를 발견 한 경우 :

Visual Studio 내에서 테스트 메뉴-> 테스트 설정-> 기본 프로세서 아키텍처를 클릭하고 참조하는 다른 어셈블리의 아키텍처와 일치하는지 확인하십시오. 다른 어셈블리가 x64이고 테스트 설정이 x86 인 경우 원래 포스터의 증상이 나타날 수 있습니다.


0

나는 Xamarin 프로젝트에서 일하고 있었고 항상 obj 폴더를 삭제하고 다시 빌드하면 내 문제가 해결되었습니다. 내 VS가 인식하지 못하는 네임 스페이스는 내 프로젝트 BTW의 코드였습니다.


0

제 경우에는 해당 어셈블리를 제거 / 추가하는 것이 효과가있었습니다.


0

비슷한 문제가있어서 문제를 해결하는 데 약간의 시간이 걸렸으므로 공유하기로 생각했습니다.

필자의 경우 확인할 수없는 네임 스페이스는 Company.Project.Common.Models.EF 입니다. 새 Company.Project.BusinessLogic.Common 네임 스페이스에 파일을 추가했습니다 .

파일의 대부분은

using Company.Project;

그런 다음 모델을 Common.Models.EF 로 참조하십시오 . 또한 가지고 있던 모든 파일

using Company.Project.BusinessLogic;

VS가 사용할 네임 스페이스를 결정할 수 없어 실패했습니다.

해결책은 두 번째 네임 스페이스를 Company.Project.BusinessLogic.CommonServices 로 변경하는 것입니다.


-1

Visual Studio 2019를 다시 시작하면됩니다.


Vaccano 썼다 : 내가 시도 : Visual Studio를 다시 시작
Woworks
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.