System.ComponentModel.DataAnnotations'a neden başvuramıyorum?


101

WPF projemde DataAnnotations'ı aşağıdakilerle maksimum dize uzunluğunu belirtmek için kullanmaya çalışıyorum:

using System.ComponentModel.DataAnnotations;

Ancak, hatayı alıyorum

'DataAnnotations' tür veya ad alanı adı 'System.ComponentModel' ad alanında mevcut değil (bir derleme başvurusu eksik mi?)

Başka örnekler gördüm DataAnnotations gelmez bu ad var. C # 4 kullanıyorum. Bunu kullanamamam için herhangi bir sebep var mı? Düzeltmek için ne yapabilirim?


MVC'yi kurdunuz mu? DataAnnotations'ın bu pakete ait olduğuna inanıyorum
dougajmcdonald

3
Belki de "bir montaj referansı eksik."
phoog

1
Hata mesajları, göz ardı edilmemek için yardımcı olacak şekilde tasarlanmıştır.
Kendall Frey

6
Tamam beyler, cahil göründüğüm için beni affedin, ama ben montajı referans alıyorum System.ComponentModelve bunun içinde çeşitli diğer bileşenleri kullanıyorum. Aşağıdaki @Hari'ye göre DataAnnotations, kendi meclisinde var görünüyor . System.ComponentModelAynı isim alanında olduğu için içinde var olacağını düşündüm .
DaveDev

Yanıtlar:


157

Bu ad alanının tanımlandığı derlemeye başvurmanız gerekir (visual studio şablonlarında varsayılan olarak referans gösterilmez). Referans yöneticinizi açın ve System.ComponentModel.DataAnnotations derlemesine bir referans ekleyin (Çözüm gezgini -> Referans ekle -> .Net sekmesini seçin -> listeden System.ComponentModel.DataAnnotations'ı seçin)


11
Burada garip olan şey, VS'nin bana bunun için normal 'Potansiyel Düzeltme' verememiş olmasıdır. Nedenini merak ediyorum ...
Todd Vance

VS2019'da, .net sekmesi artık yok. JohnB'nin benim için çalışan daha yeni cevabına bakın!
peter.cyc

24

Kullanılıyorsa NET Çekirdek veya .NET Standard

kullanım:

NuGet Paketlerini Yönetin ..

NuGet Paketlerini Yönetin

onun yerine:

Referans ekle...

Referans Ekle'yi kullanmayın


5
Komut satırındandotnet add package System.ComponentModel.Annotations
Eric

ayrıca VSCode'da nuget paket yöneticisini kurarak, - -> ardından "command + shift + p" (mac için) - -> komutunu takip ederek ve "Nuget Paket yöneticisi" yazarak ve otomatik tamamlanan listeden "paket ekle" yi seçerek - - > ve System .. yazarak ve otomatik tamamlamanın doğru paketi göstermesini beklemek ve "System.ComponentModel.Annotations" - -> seçmek ve bu derlemenin dahil edilmesi gereken projeyi seçmek - -> ve gerekirse "geri yükle" yi seçmek referans oluşturun.
supi

13

Referans System.ComponentModel.DataAnnotations için

Bir kod dosyasında Using System.ComponentModel.DataAnnotations; dosyanın en üstünde, örneğin:

using System.ComponentModel.DataAnnotations;

Çözüm gezgininde projeye sağ tıklayarak projenize bir .NET referansı ekleyin:

görüntü açıklamasını buraya girin

Bu yardımcı olur umarım! Bu soru bana yardımcı oldu.


8

Başvurularda yoksa (benim sahip olmadığım gibi), derlemeleri almak ve hataları çözmek için NuGet System.ComponentModel.Annotations'ı da ekleyebilirsiniz. (Bu yanıtı buraya eklemek, hata için hala Google'ın en üstünde olduğu için)


4

Ben de aynı sorunu yaşadım ve söz konusu referansı olmayan projelerimden birine referansı ekleyerek çözdüm. Çözümünüzde 2-3 projeniz varsa, bu referansı diğer projelere ekleyerek kontrol edin.


2

Projeniz için FrameWork sürüm 4.5 ve üstünü kullanın, ardından sorun çözüldü. Çünkü bu ad alanı 4.5 ve üstü.


1
bu yanlış. buraya
itsho

.NET 4.5.x kullanıyorum ve dahil değil. Ama o zaman MVC kullanmıyorum. Bu uygulama, günde bir kez cron işi olarak çalıştırılacak, kullanıcı arayüzü olmayan bir konsol uygulamasıdır. Her SQL Server tablo satırından aldığım sütunlardaki verileri tutacak veri üyelerini temsil eden sınıflarda yalnızca DataAnnotations'ı kullanmak istiyorum. Referans olarak manuel olarak eklemeyi deneyeceğim.
MiddleAgedMutantNinjaProgrammer

Şuna bir bak; burada
user2090762

@ user2090762: ad alanı mevcut, ancak sınıfların tamamı henüz mevcut değil. Özellikle, EmailAddressAttribute 4.5'e kadar kullanılamaz.
jmoreno

2

Silverlight 5'ten System.ComponentModel.DataAnnotations'a aşağıdaki sürümle (1) 'de başvuramadığımı buldum. Silverlight 5 derlemelerinin. umarım aşağıdaki (2) 'de bulunan Silverlight 5 paketini yükler. Bu başarısız olursa, bu yazıyı güncelleyeceğim.

[GÜNCELLEME: başarısız oldu. Silverlight 5 ile ilgili her şeyi yükledim ve .dll montaj System.ComponentModel.DataAnnotations'ın Silverlight sürümüne sahip değilim. Çok kötü. GÜNCELLEME II: Visual Studio 2008 veya 2010 için Silverlight geliştirici kitinin önceki bir yüklemesinden bu ada sahip eski bir .dll buldum. Bu dosyayı ekledim ve IntelliSense artık sınıf üyelerindeki öznitelikleri tanıdığı için 'çalışıyor' gibi görünüyor, gibi [Display(Name = "My Property Name")]. İster ya bunda her şey için bu eserler bilmiyorum .dll değil.]

(1)

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

Yüklü Sürüm: Profesyonel

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


Güncelleme III - Silverlight 5 için System.ComponentModel.DataAnnotations.dll dosyasını istemci tarafında çalışacak şekilde alamadım, ancak garip bir şekilde sunucu tarafında Silverlight projesi bu .dll'nin .NET v4.5.1 sürümünü kullanıyor. Ancak istemci tarafı .NET sürümünü kabul etmeyecek ve bu .dll'nin Silverlight sürümünü talep edecek, bu tarih itibariyle hiçbir yerde bulamıyorum. Yani müşteri tarafında olmadan yapmalısınız.
PaulDecember

2

Aynı sorunla karşılaştığımda bu konuda yardım aradım.

Aşağıdakiler 2012 yılında ilk sorulan sorunun cevabı olmasa da bu konuya rastlayanlar için bir çözüm olabilir.

Bunu çözmenin bir yolu , projenizin çözümün neresinde olduğunu kontrol etmektir. Örneğim için (bir NuGet paketi yüklemeye çalışıyordum ama olmadı ve listelenen hata geldi) proje dosyamın çözüm gezgininde gösterilmesine rağmen çözüm dizinine dahil edilmediği ortaya çıktı. Projeyi kapsam dışı dizinden sildim ve projeyi yeniden ekledim ancak bu sefer doğru konumda.


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 stüdyosunu vs2008'den vs2010'a güncellemeye çalıştıysanız. Ve uygulamanız 3.5 sürümü kullanıyor (ve yükseltmek istemiyorsunuz) ve ayrıca WCF RIA Hizmetleri BETA'yı kullanıyor ... Kötü haberlerim var ... WCF RIA Services v1'e yükseltmeniz GEREKİR (BETA, vs2010'da çalışmaz) ) ... ve bu nedenle ... Silverlight 4 + yükseltmesini framework 4.0'a yüklemeniz gerekir.

Şuna bakın: http://blog.nappisite.com/2010/05/updating-visual-studio-2008net-35-ria.html


0

Silverlight 4'ten Silverlight 5'e yükselttim ve sonra bu sorunu yaşıyordum. Projemde "Referanslar" altında "System.ComponentModel.DataAnnotations" referansına sahip olsam da, daha önce başvurulan derlemenin bulunamadığını belirten sarı bir verim işareti vardı. "System.ComponentModel.DataAnnotations" başvurusunun özelliklerinin "Belirli Sürüm = Doğru" olarak belirttiği ortaya çıktı, bunu "Belirli Sürüm = Yanlış" olarak değiştirdiğimde sorunu çözdüm. "Referanslar" altındaki "System.ComponentModel.DataAnnotations" derlemesine sağ tıklayın ve bağlam menüsünden "Özellikler" i seçin. "Belirli Sürüm = Yanlış" için özellik değerinin olup olmadığını kontrol edin.

Silverlight 5'e yükseltmeden sonra artık mevcut olmayan eski Silverlight 4 montajına atıfta bulunmuş olmalı.


0

System.ComponentModel.DataAnnotations kendi derlemesinde yer aldığından, başvuruda bulunduğunuzdan emin olmanız gerekir. Basitçe:

1). Soloution'a sağ tıklayın ve ekle'yi seçin.

2). Listeden referans seçin.

3). "System.ComponentModel.DataAnnotation" öğesini arayın ve sol tarafındaki onay kutusunu işaretleyin ve ok'a basın.

İş yapıldı, herhangi bir referans hatası olmamalı.


0

Benim de bu problemim var. System ile aynı ad alanını eklediğimde bu çok aptalca. Tüm referansları kaldırmaya çalışıyorum ama çözülmedi. "Global :: System.ComponentModel" kullanıyorum, o da çalışıyor. Ad alanımı kaldırdığımda bu sorun çözüldü.


-6

Ben de aynı sorunu yaşadım, bu sorunu şu şekilde çözdüm.

Sayfaya sağ tıklayın, Mülk'ü seçin. derleme eyleminde İçerik'i seçin.

Umarım bu çözüm size yardımcı olabilir.


Hangi "sayfadan" bahsediyorsunuz? Ve bu tam olarak nasıl yardımcı oluyor?
Crono

1
Bu gerçekten yanlış. Oluşturma sırasında bir proje öğesinin "İçerik" olarak değerlendirilmesini sağlarsanız, davranışını kaybeder. Yani bunu bir sınıfta yaparsanız, artık derlenmeyecek ve kodu hiçbir zaman çağrılmayacaktır. Bunun yerine, program derleme çıktısının ikili dosyaları boyunca bir dosya olarak kopyalanacaktır. Bu nedenle, derleme hatalarını almayı bırakacaksınız, ancak bu kesinlikle bir derleme sorununa çözüm değildir.
Ivaylo Slavov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.