System.ComponentModel.DataAnnotations를 참조 할 수없는 이유는 무엇입니까?


99

내 WPF 프로젝트에서 DataAnnotations를 사용하여 다음과 같이 최대 문자열 길이를 지정하려고합니다.

using System.ComponentModel.DataAnnotations;

그러나 오류가 발생합니다.

형식 또는 네임 스페이스 이름 'DataAnnotations'가 네임 스페이스 'System.ComponentModel'에 없습니다 (어셈블리 참조가 누락 되었습니까?).

나는 다른 예를 본 적이 DataAnnotations 않습니다 이 네임 스페이스에 존재합니다. C # 4를 사용하고 있습니다. 이것을 사용할 수없는 이유가 있습니까? 이 문제를 해결하려면 어떻게해야합니까?


MVC를 설치 했습니까? 나는 DataAnnotations 해당 패키지에 속하는 생각
dougajmcdonald

3
아마도 "어셈블리 참조가 없습니다."
phoog apr

1
오류 메시지는 무시되지 않고 도움이되도록 설계되었습니다.
Kendall Frey 2012

6
좋아, 무지 해 보이지만 나는 어셈블리를 참조하고 System.ComponentModel다양한 다른 구성 요소를 사용하고 있습니다. 아래 @Hari에 따르면 DataAnnotations자체 어셈블리에 존재 하는 것으로 보입니다 . 나는 그것이 System.ComponentModel같은 네임 스페이스에 있기 때문에 그 안에 존재할 것이라고 생각했습니다 .
DaveDev 2013

답변:


157

이 네임 스페이스가 정의 된 어셈블리를 참조해야합니다 (기본적으로 Visual Studio 템플릿에서 참조되지 않음). 참조 관리자를 열고 System.ComponentModel.DataAnnotations 어셈블리에 대한 참조를 추가합니다 (솔루션 탐색기-> 참조 추가-> .Net 탭 선택-> 목록에서 System.ComponentModel.DataAnnotations 선택).


10
여기서 이상한 점은 VS가이 문제에 대한 정상적인 '잠재적 수정'을 제공 할 수 없다는 것입니다. 원더 왜 ...
토드 밴스

VS2019에서는 .net 탭이 없습니다 (더 이상). 나를 위해 일하는 JohnB의 최신 답변을 확인하십시오!
peter.cyc

22

.NET Core 또는 .NET Standard를 사용하는 경우

사용하다:

NuGet 패키지 관리 ..

NuGet 패키지 관리 사용

대신에:

참조 추가 ...

참조 추가를 사용하지 마십시오.


5
명령 줄에서dotnet add package System.ComponentModel.Annotations
Eric

또한 VSCode에 nuget 패키지 관리자를 설치하고--> 명령 "command + shift + p"(Mac의 경우)--> "Nuget 패키지 관리자"를 입력하고 자동 완성 목록에서 "패키지 추가"를 선택하여-- >을 입력하고 System ..을 입력하고 자동 완성을 기다렸다가 올바른 패키지를 표시하고 "System.ComponentModel.Annotations"-->를 선택하고이 어셈블리를 포함해야하는 프로젝트를 선택합니다.--> 필요한 경우 "복원"을 선택합니다. 참조를 설정하십시오.
supi

13

System.ComponentModel.DataAnnotations를 참조하려면

코드 파일에서 Using System.ComponentModel.DataAnnotations; 다음과 같은 파일 상단에

using System.ComponentModel.DataAnnotations;

솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하여 프로젝트에 .NET 참조를 추가합니다.

여기에 이미지 설명 입력

도움이 되었기를 바랍니다! 이 질문이 도움이되었습니다.


8

참조에없는 경우 (예 : 그렇지 않은 경우) NuGet System.ComponentModel.Annotations를 추가하여 어셈블리를 가져오고 오류를 해결할 수도 있습니다. (이 답변이 오류에 대한 Google의 상단으로 여기에 추가)


4

나는 또한 같은 문제가 있었고 언급 된 참조가없는 내 프로젝트 중 하나에 참조를 추가하여 해결했습니다. 솔루션에 2-3 개의 프로젝트가있는 경우이 참조를 다른 프로젝트에 추가하여 확인하십시오.


2

프로젝트에 FrameWork 버전 4.5 이상을 사용하면 문제가 해결되었습니다.이 네임 스페이스는 4.5 이상이기 때문입니다.


1
그것은 틀 렸습니다. 여기를
itsho

.NET 4.5.x를 사용하고 있으며 포함되어 있지 않습니다. 하지만 MVC를 사용하지 않습니다. 이 앱은 하루에 한 번 크론 작업으로 실행되는 UI가없는 콘솔 앱입니다. 각 SQL Server 테이블 행에서 검색하는 열의 데이터를 보유 할 데이터 멤버를 나타내는 클래스에서만 DataAnnotations를 사용하고 싶습니다. 참조로 수동으로 추가해 보겠습니다.
MiddleAgedMutantNinjaProgrammer

그것을보십시오; 여기에
user2090762

@ user2090762 : 네임 스페이스가 있지만 모든 클래스가 아직 존재하지는 않습니다. 특히 EmailAddressAttribute는 4.5까지 사용할 수 없습니다.
jmoreno

2

Silverlight 5의 System.ComponentModel.DataAnnotations를 (1)에서 아래 버전으로 참조 할 수 없음을 발견했습니다. Silverlight 5 어셈블리가 .NET 어셈블리를 사용할 수 없다는 것을 발견했습니다. "Silverlight 런타임에 대해 빌드되지 않았기 때문에 System.ComponentModel.DataAnnotations에 대한 참조를 추가 할 수 없습니다. ..."라는 오류 메시지가 표시됩니다. 아래 (2)에있는 Silverlight 5 패키지를 설치하기를 바랍니다. 이것이 실패하면이 게시물을 업데이트하겠습니다.

[업데이트 : 실패했습니다. Silverlight 5와 관련된 모든 것을 설치했는데 .dll 어셈블리 System.ComponentModel.DataAnnotations의 Silverlight 버전이 없습니다. 너무 나쁘다. 업데이트 II : Visual Studio 2008 또는 2010 용 Silverlight 개발자 키트의 이전 설치에서이 이름을 가진 이전 .dll을 찾았습니다.이 파일을 추가했는데 IntelliSense가 이제 클래스 구성원의 특성을 인식한다는 점에서 '작동'하는 것 같습니다. 같은 [Display(Name = "My Property Name")]. 들어이 .dll의 다른 모든 작업에 대해 작동하는지 여부는 모르겠습니다.]

(1)

Microsoft Visual Studio Professional 2013
Version 12.0.21005.1 REL
Microsoft .NET Framework
Version 4.5.51641

설치된 버전 : Professional

(2) http://go.microsoft.com/fwlink/?LinkId=229318


업데이트 III-Silverlight 5의 경우 클라이언트 측에서 System.ComponentModel.DataAnnotations.dll을 작동시킬 수 없었지만 이상하게도 서버 측에서는 Silverlight 프로젝트가이 .dll의 .NET v4.5.1 버전을 사용합니다. 그러나 클라이언트 측은 .NET 버전을 받아들이지 않을 것이며이 .dll의 Silverlight 버전을 요구합니다.이 날짜로는 어디에서도 찾을 수 없습니다. 따라서 클라이언트 측에서없이해야합니다.
PaulDecember

1

같은 문제를 접하면서이 주제에 대한 도움말을 검색했습니다.

다음은 2012 년에 처음 질문 한 질문에 대한 답변이 아닐 수 있지만이 스레드를 접하는 사람들에게는 해결책이 될 수 있습니다.

이를 해결 하는 방법 은 프로젝트가 솔루션 내에서 어디에 있는지 확인하는 것입니다. 내 인스턴스에서 내 프로젝트 파일이 솔루션 탐색기에 표시되지만 솔루션 디렉터리에 포함되지 않은 것으로 나타났습니다 (NuGet 패키지를 설치하려고했지만 그렇지 않고 나열된 오류가 발생했습니다). 범위 밖의 디렉토리에서 프로젝트를 삭제하고 프로젝트를 다시 추가했지만 이번에는 올바른 위치에 있습니다.


0
This error occurs when the reference to the "System.dll" got removed.Solution to the problem is very simple add the reference to "System.dll".The dll is normally available in the following location
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727" .Add the reference your problem will get solved .

0

Visual Studio를 vs2008에서 vs2010으로 업데이트하려고 시도한 경우. 앱에서 프레임 워크 3.5를 사용하고 (업그레이드하고 싶지 않음) WCF RIA Services BETA도 사용했습니다. 안타깝게도 WCF RIA Services v1로 업그레이드해야합니다 (베타는 vs2010에서 작동하지 않음). ) ... 이로 인해 ... Silverlight 4를 설치하고 프레임 워크 4.0으로 업그레이드해야합니다.

이것을보십시오 : http://blog.nappisite.com/2010/05/updating-visual-studio-2008net-35-ria.html


0

Silverlight 4에서 Silverlight 5로 업그레이드 한 후이 문제가 발생했습니다. 내 프로젝트의 "참조"아래에 "System.ComponentModel.DataAnnotations"에 대한 참조가 있지만 이전에 참조 된 어셈블리를 찾을 수 없음을 나타내는 노란색 양보 기호가 있습니다. "System.ComponentModel.DataAnnotations"참조의 속성이 "Specific Version = True"를 나타내며 "Specific Version = False"로 변경하면 문제가 해결되었습니다. "참조"에서 "System.ComponentModel.DataAnnotations"어셈블리를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 "속성"을 선택합니다. "Specific Version = False"의 속성 값을 확인하십시오.

Silverlight 5로 업그레이드 한 후 더 이상 사용할 수 없었던 이전 Silverlight 4 어셈블리를 참조 했어야합니다.


0

System.ComponentModel.DataAnnotations는 자체 어셈블리에 포함되어 있으므로 참조되었는지 확인해야합니다. 간단히 :

1). Soloution을 마우스 오른쪽 버튼으로 클릭하고 추가를 선택합니다.

2). 목록에서 참조를 선택하십시오.

삼). "System.ComponentModel.DataAnnotation"을 검색하고 왼쪽에있는 확인란을 선택하고 확인을 누릅니다.

작업 완료, 참조 오류가 없어야합니다.


0

나는 또한이 문제가 있습니다. System과 동일한 네임 스페이스를 추가하면 매우 어리석은 일입니다. 모든 참조를 제거하려고하는데 해결되지 않았습니다. 나는 "global :: System.ComponentModel"을 사용한다, 그것도 작동하고있다. 내 네임 스페이스를 제거하면이 문제가 해결되었습니다.


-6

나는 같은 문제가 있었고 다음과 같은 방법 으로이 문제를 해결했습니다.

페이지를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다. 빌드 작업에서 콘텐츠를 선택합니다.

이 솔루션이 도움이되기를 바랍니다.


어떤 "페이지"를 참조하고 있습니까? 이것이 정확히 어떻게 도움이됩니까?
Crono 2014 년

1
음, 이것은 정말 잘못되었습니다. 빌드 중에 프로젝트 요소를 "콘텐츠"로 처리하면 동작이 손실됩니다. 따라서 클래스에서 수행하면 더 이상 컴파일되지 않고 코드가 호출되지 않습니다. 대신 프로그램 컴파일 출력의 바이너리를 따라 파일로 복사됩니다. 그렇기 때문에 컴파일 오류 수신이 중단되지만 컴파일 문제에 대한 해결책은 아닙니다.
Ivaylo Slavov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.