2012-04-16 62 views
60

Tôi đang cố gắng sử dụng DataAnnotations trong dự án WPF của tôi để xác định chiều dài tối đa của chuỗi, như sau:Tại sao tôi không thể tham chiếu System.ComponentModel.DataAnnotations?

using System.ComponentModel.DataAnnotations; 

Tuy nhiên, tôi nhận được lỗi

Loại hoặc namespace tên ' DataAnnotations' không tồn tại trong không gian tên 'System.ComponentModel' (là bạn thiếu một lắp ráp tham khảo?)

tôi đã nhìn thấy những ví dụ khác wh 01 DataAnnotationshiện tồn tại trong không gian tên này. Tôi đang sử dụng C# 4. Có lý do nào khiến tôi không thể sử dụng cái này không? Tôi có thể làm gì để sửa chữa nó?

+0

Bạn đã cài đặt MVC chưa? Tôi tin rằng DataAnnotations thuộc về gói đó – dougajmcdonald

+3

Có lẽ bạn đang "thiếu tham chiếu lắp ráp". – phoog

+1

Thông báo lỗi được thiết kế hữu ích, không bị bỏ qua. –

Trả lời

120

Bạn phải tham khảo lắp ráp trong đó không gian tên này được xác định (nó không được tham chiếu theo mặc định trong các mẫu phòng thu trực quan). Mở trình quản lý tham chiếu của bạn và thêm tham chiếu đến nhóm System.ComponentModel.DataAnnotations (Trình khám phá giải pháp -> Thêm tham chiếu -> Chọn tab .Net -> chọn System.ComponentModel.DataAnnotations từ danh sách)

+2

Điều kỳ quặc ở đây là VS không thể cho tôi một 'Bản sửa lỗi tiềm năng' bình thường cho cái này. Tự hỏi tại sao ... –

-5

Tôi có cùng một vấn đề, Tôi giải quyết vấn đề này bằng cách làm theo.

Nhấp chuột phải vào trang, chọn Thuộc tính. trong hành động xây dựng, hãy chọn Nội dung.

Hy vọng rằng giải pháp này có thể giúp bạn.

+0

Bạn đang đề cập đến "trang" nào? Và làm thế nào để giúp chính xác? – Crono

+0

Vâng, điều này thực sự sai. Nếu bạn tạo một phần tử dự án được coi là "Nội dung" trong khi xây dựng, nó sẽ mất đi hành vi của nó. Vì vậy, nếu bạn làm điều đó trên một lớp học, nó sẽ không còn được biên soạn và mã của nó sẽ không được gọi là bao giờ hết. Thay vào đó nó sẽ được sao chép như một tập tin dọc theo các tệp nhị phân của đầu ra biên dịch chương trình. Đó là lý do tại sao bạn sẽ ngừng nhận các lỗi biên dịch, nhưng nó chắc chắn không phải là một giải pháp cho một vấn đề biên dịch. –

0

Nếu bạn cố gắng cập nhật studio trực quan từ vs2008 thành vs2010. Và ứng dụng của bạn sử dụng framework 3.5 (và bạn không muốn nâng cấp nó), và cũng sử dụng WCF RIA Services BETA ... Tôi có tin xấu ... bạn PHẢI nâng cấp lên WCF RIA Services v1 (BETA không hoạt động trên vs2010) ... và vì điều này ... bạn cũng phải cài đặt Silverlight 4 + nâng cấp lên khuôn khổ 4,0

Xem này: http://blog.nappisite.com/2010/05/updating-visual-studio-2008net-35-ria.html

2

Sử dụng phiên bản frameWork 4.5 trở lên đối với dự án của bạn thì vấn đề được giải quyết. Bởi vì không gian tên này dưới 4.5 trở lên.

+1

không chính xác. xem [ở đây] (https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations (v = vs.100) .aspx) – itsho

+0

Tôi đang sử dụng .NET 4.5.x và nó không được bao gồm . Nhưng, sau đó tôi không sử dụng MVC. Ứng dụng này là một ứng dụng giao diện điều khiển không có giao diện người dùng sẽ chạy dưới dạng công việc cron một lần mỗi ngày. Tôi chỉ muốn sử dụng DataAnnotations trong các lớp đại diện cho các thành viên dữ liệu sẽ giữ dữ liệu từ các cột mà tôi lấy ra từ mỗi hàng của bảng SQL Server. Tôi sẽ thử thêm nó theo cách thủ công làm tham chiếu. – MiddleAgedMutantNinjaProgrammer

+0

Có một cái nhìn về nó; [ở đây] (https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations (v = vs.110) .aspx # Giao diện) – user2090762

5

Để tham khảo System.ComponentModel.DataAnnotations

Trong một tập tin mã có dùng System.ComponentModel.DataAnnotations; ở phía trên cùng của tập tin như:

using System.ComponentModel.DataAnnotations; 

Thêm một tham chiếu .NET cho dự án của bạn bằng cách kích chuột phải vào dự án trong solution explorer:

enter image description here

Hope this helps! Câu hỏi này đã giúp tôi.

2

Tôi thấy rằng tôi không thể tham chiếu System.ComponentModel.DataAnnotations từ Silverlight 5 với phiên bản bên dưới tại (1). Tôi thấy rằng các hội đồng Silverlight 5 không thể sử dụng các assembly .NET, nó đưa ra lỗi "Bạn không thể thêm một tham chiếu đến System.ComponentModel.DataAnnotations vì nó không được xây dựng dựa trên thời gian chạy Silverlight. ..." Tôi dự định giải quyết vấn đề này bằng cách hy vọng cài đặt gói Silverlight 5 được tìm thấy tại (2) bên dưới. Nếu điều này không thành công, tôi sẽ cập nhật bài đăng này.

[CẬP NHẬT: không thành công. Tôi đã cài đặt mọi thứ liên quan đến Silverlight 5 và tôi không có phiên bản Silverlight của tập hợp .dll System.ComponentModel.DataAnnotations. Quá tệ. CẬP NHẬT II: Tôi đã tìm thấy một tệp .dll cũ có tên này từ bản cài đặt trước của bộ phát triển Silverlight cho Visual Studio 2008 hoặc 2010. Tôi đã thêm tệp này và dường như 'hoạt động', trong đó IntelliSense hiện đang nhận ra thuộc tính trên các thành viên của lớp, như [Display(Name = "My Property Name")]. hay không này làm việc cho tất cả mọi thứ khác trong này Dll tôi không biết]

(1)

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

Version cài đặt:. Professional

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

+0

Cập nhật III - Tôi không thể lấy System.ComponentModel.DataAnnotations.dll để làm việc ở phía máy khách, cho Silverlight 5, nhưng kỳ lạ ở phía máy chủ, dự án Silverlight sử dụng phiên bản .NET v4.5.1 của tệp .dll này tốt. Nhưng phía máy khách sẽ không chấp nhận phiên bản .NET và yêu cầu phiên bản Silverlight của tệp .dll này, kể từ ngày này tôi không thể tìm thấy ở bất kỳ đâu. Vì vậy, bạn phải làm mà không có ở phía khách hàng. – PaulDecember

4

Tôi cũng có cùng một vấn đề và tôi đã giải quyết bằng cách thêm tham chiếu vào một trong các dự án của tôi không có tham chiếu được đề cập. Nếu bạn có 2-3 dự án trong giải pháp của mình, hãy kiểm tra bằng cách thêm tham chiếu này vào các dự án khác.

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

Tôi đã nâng cấp từ Silverlight 4 lên Silverlight 5 và sau đó tôi gặp sự cố này. Mặc dù tôi đã có một tham chiếu đến "System.ComponentModel.DataAnnotations" dưới "Tham khảo" trong dự án của tôi, nó có một dấu hiệu năng suất màu vàng của nó mà chỉ ra các hội đồng tham chiếu trước đó không thể được tìm thấy. Nó bật ra rằng các thuộc tính của tài liệu tham khảo "System.ComponentModel.DataAnnotations" chỉ ra "Phiên bản cụ thể = True", khi tôi thay đổi này để "Phiên bản cụ thể = False" nó cố định vấn đề. Nhấp chuột phải vào cụm "System.ComponentModel.DataAnnotations" trong phần "Tham khảo" và chọn "Properties" từ trình đơn ngữ cảnh. Kiểm tra giá trị thuộc tính cho "Phiên bản cụ thể = False".

Nó phải có được tham khảo cũ Silverlight 4 lắp ráp mà không còn có sẵn sau khi nâng cấp để Silverlight 5.

0

System.ComponentModel.DataAnnotations được chứa trong lắp ráp riêng của mình, do đó bạn cần phải chắc chắn rằng bạn có nó được giới thiệu. Chỉ cần đơn giản:

1). Nhấp chuột phải vào Soloution và chọn add.

2). Chọn tham chiếu từ danh sách.

3). Tìm kiếm "System.ComponentModel.DataAnnotation" và đánh dấu vào hộp kiểm ở bên trái của nó và nhấn ok.

Công việc đã hoàn thành, không nên có bất kỳ lỗi giới thiệu nào.

0

Nếu bạn không có nó trong tài liệu tham khảo (như tôi đã không) bạn cũng có thể thêm NuGet System.ComponentModel.Annotations để có được các hội đồng và giải quyết các lỗi. (Thêm nó ở đây vì câu trả lời này vẫn là lỗi của Google)

Các vấn đề liên quan