मैं System.ComponentModel.DataAnnotations का संदर्भ क्यों नहीं दे सकता?


97

मैं अपने WPF प्रोजेक्ट में DataAnnotations का उपयोग करने की कोशिश कर रहा हूं, निम्नलिखित के साथ तारों की अधिकतम लंबाई निर्दिष्ट करने के लिए:

using System.ComponentModel.DataAnnotations;

हालाँकि, मुझे त्रुटि मिलती है

प्रकार या नाम स्थान का नाम 'DataAnnotations' नामस्थान 'System.ComponentModel' में मौजूद नहीं है (क्या आप असेंबली संदर्भ याद कर रहे हैं?)

मैं अन्य उदाहरण हैं, जहां देखा है DataAnnotations है इस नाम स्थान में मौजूद हैं। मैं C # 4 का उपयोग कर रहा हूं। क्या कोई कारण है कि मैं इसका उपयोग क्यों नहीं कर सकता हूं? इसे ठीक करने के लिए मुझे क्या करना होगा?


क्या आपने MVC स्थापित किया है? मेरा मानना ​​है कि DataAnnotations उस पैकेज से संबंधित है
dougajmcdonald

3
शायद आप "एक विधानसभा संदर्भ याद कर रहे हैं।"
12

1
त्रुटि संदेश सहायक होने के लिए डिज़ाइन किए गए हैं, न कि अनदेखा किए जाने के लिए।
केंडल फ़्री

6
ठीक है दोस्तों, मुझे अज्ञानता प्रकट करने के लिए क्षमा करें, लेकिन मैं विधानसभा का उल्लेख कर रहा हूं System.ComponentModelऔर इसमें विभिन्न अन्य घटकों का उपयोग कर रहा हूं । नीचे @Hari के अनुसार, यह ऐसा प्रतीत होता है जो DataAnnotationsअपनी विधानसभा में मौजूद है। मुझे लगा कि यह System.ComponentModelउसी नामस्थान में मौजूद है।
डेवडेव

जवाबों:


156

आपको उस असेंबली का संदर्भ देना होगा जिसमें यह नाम स्थान परिभाषित है (यह दृश्य स्टूडियो टेम्पलेट्स में डिफ़ॉल्ट रूप से संदर्भित नहीं है)। अपना संदर्भ प्रबंधक खोलें और सिस्टम में एक संदर्भ जोड़ें।


10
यहां यह विचित्र है कि वीएस मुझे इसके लिए सामान्य 'संभावित सुधार' देने में सक्षम नहीं था। आश्चर्य क्यों ...
टोड वंस

VS2019 में, .net टैब वहां (अब) नहीं है। JohnB के हालिया उत्तर की जाँच करें जो मेरे लिए काम कर रहा है!
पीटर।

19

यदि .NET कोर या .NET स्टैंडर्ड का उपयोग कर रहे हैं

उपयोग:

NuGet पैकेज प्रबंधित करें ..

NuGet पैकेज प्रबंधित करें का उपयोग करें

के बजाय:

संदर्भ जोड़ें ...

Add Reference का उपयोग न करें


5
कमांड लाइन सेdotnet add package System.ComponentModel.Annotations
एरिक

VSCode में nuget पैकेज मैनेजर स्थापित करने के माध्यम से भी, - -> इसके बाद कमांड "कमांड + शिफ्ट + p" (मैक पर) -> - और "Nuget पैकेज मैनेजर" में टाइप करें और ऑटोकंप्लीट लिस्ट से "एड पैकेज" चुनें - - > और सिस्टम में टाइपिंग .. और सही पैकेज दिखाने के लिए स्वतः पूर्ण होने की प्रतीक्षा कर रहा है और "System.ComponentModel.Annotations" -> का चयन करें और उस प्रोजेक्ट का चयन करें जहां इस विधानसभा को शामिल करने की आवश्यकता है - -> और जरूरत पड़ने पर "रिस्टोर" का चयन करें संदर्भ स्थापित करें।
Supi

13

संदर्भ प्रणाली के लिए ।ComponentModel.DataAnnotations

System.ComponentModel.DataAnnotations का उपयोग करने के लिए एक कोड फ़ाइल में; फ़ाइल के शीर्ष पर जैसे:

using System.ComponentModel.DataAnnotations;

समाधान एक्सप्लोरर में प्रोजेक्ट को राइट क्लिक करके अपने प्रोजेक्ट में .NET संदर्भ जोड़ें:

यहां छवि विवरण दर्ज करें

उम्मीद है की यह मदद करेगा! इस सवाल ने मेरी मदद की।


8

यदि आपके पास यह संदर्भों में नहीं है (जैसे कि मैंने नहीं किया) तो आप असेंबली प्राप्त करने और त्रुटियों को हल करने के लिए NuGet System.ComponentModel.Annotations भी जोड़ सकते हैं। (इस उत्तर के रूप में इसे यहां जोड़ना अभी भी त्रुटि के लिए Google के शीर्ष पर है)


4

मुझे भी यही समस्या थी और मैंने अपनी एक परियोजना में संदर्भ जोड़कर हल किया, जिसमें उल्लेखित संदर्भ नहीं था। यदि आपके समाधान में 2-3 परियोजनाएं हैं, तो इस संदर्भ को अन्य परियोजनाओं में जोड़कर देखें।


2

फ्रेमवर्क संस्करण का उपयोग करें 4.5 और इसके बाद के संस्करण आपकी परियोजना के लिए समस्या हल हो गई है। लेकिन इस नाम स्थान 4.5 और नीचे से नीचे है।


1
यह गलत है। यहाँ
इसका here

मैं .NET 4.5.x का उपयोग कर रहा हूं और यह शामिल नहीं है। लेकिन, तब मैं एमवीसी का उपयोग नहीं कर रहा हूं। यह ऐप बिना यूआई वाला एक कंसोल ऐप है जिसे दिन में एक बार क्रॉन जॉब के रूप में चलाया जाएगा। मैं केवल उन कक्षाओं में DataAnnotations का उपयोग करना चाहता हूं जो उन डेटा सदस्यों का प्रतिनिधित्व करते हैं जो प्रत्येक SQL सर्वर तालिका पंक्ति से प्राप्त किए गए स्तंभों से डेटा पकड़ेंगे। मैं इसे संदर्भ के रूप में मैन्युअल रूप से जोड़ने का प्रयास करूंगा।
मिडिल एजम्यूटेंट नाइनजप्रोग्रामर

उस पर एक नजर है; यहाँ
user2090762

@ user2090762: नाम स्थान मौजूद है, लेकिन सभी वर्ग अभी तक मौजूद नहीं हैं। विशेष रूप से EmailAddressAttribute 4.5 तक उपलब्ध नहीं है।
jmoreno

2

मैंने पाया कि मैं नीचे दिए गए संस्करण (1) के साथ Silverlight 5 से System.ComponentModel.DataAnnotations का संदर्भ नहीं दे सकता। मैंने पाया कि सिल्वरलाइट 5 असेंबली। .NET असेंबली का उपयोग नहीं कर सकता है, यह त्रुटि देता है "आप System.ComponentModel.DataAnnotations में एक संदर्भ नहीं जोड़ सकते क्योंकि यह सिल्वरलाइट रनटाइम के खिलाफ नहीं बनाया गया था ..." "मुझे इसको हल करने की योजना है। उम्मीद है कि नीचे (2) में सिल्वरलाइट 5 पैकेज पाया जा रहा है। यदि यह विफल रहता है तो मैं इस पोस्ट को अपडेट करूंगा।

[अद्यतन: यह विफल रहा। मैंने सिल्वरलाइट 5 से संबंधित सब कुछ स्थापित किया है और मेरे पास .dll असेंबली सिस्टम का सिल्वरलाइट संस्करण नहीं है ।ComponentModel.DataAnnotations। बहुत बुरा। अद्यतन II: मुझे एक पुराना मिला। यह नाम Visual Studio 2008 या 2010 के लिए सिल्वरलाइट डेवलपर की किट के पिछले इंस्टॉलेशन से लिया गया था। मैंने इस फ़ाइल को जोड़ा और यह 'काम' प्रतीत हो रहा है, जिसमें IntelliSense अब क्लास के सदस्यों के गुणों को पहचान रहा है। इस तरह के [Display(Name = "My Property Name")]. या नहीं के रूप में यह सब कुछ के लिए काम करता है। मैं नहीं जानता।]

(1)

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

स्थापित संस्करण: पेशेवर

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


अद्यतन III - मैं Silverlight 5 के लिए, क्लाइंट पक्ष पर काम करने के लिए System.ComponentModel.DataAnnotations.dll प्राप्त नहीं कर सका, लेकिन सर्वर की तरफ से अजीब तरह से सिल्वरलाइट प्रोजेक्ट इस का .NET v4.5.1 संस्करण का उपयोग करता है। बस ठीक है। लेकिन क्लाइंट पक्ष .NET संस्करण को स्वीकार नहीं करेगा, और इस .dll के सिल्वरलाइट संस्करण की मांग करता है, जो इस तिथि के अनुसार मुझे कहीं भी नहीं मिल सकता है। तो आप ग्राहक पक्ष पर बिना करना चाहिए।
पॉलडायल

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

यदि आपने vs2008 से vs2010 तक दृश्य स्टूडियो को अपडेट करने की कोशिश की। और आपका ऐप 3.5 फ्रेमवर्क का उपयोग करता है (और आप इसे अपग्रेड नहीं करना चाहते हैं), और WCF RIA Services BETA का भी उपयोग किया है ... मेरे पास बुरी खबर है ... आप WCF RIA Services v1 में अपग्रेड करें (BETA vs2010 पर काम नहीं करता है) ) ... और इसके कारण ... आपको सिल्वरलाइट 4 स्थापित करना होगा + फ्रेमवर्क 4.0 में अपग्रेड करना होगा

इसे देखें: http://blog.nappisite.com/2010/05/updating-visual-studio-2008net-35-ria.html


0

मैंने सिल्वरलाइट 4 से सिल्वरलाइट 5 में अपग्रेड किया था और तब मुझे यह समस्या हो रही थी। हालाँकि मेरे प्रोजेक्ट में "संदर्भ" के तहत "System.ComponentModel.DataAnnotations" का संदर्भ था, लेकिन इसके द्वारा एक पीले उपज का संकेत था जिसने संकेत दिया था कि पहले संदर्भित विधानसभा नहीं मिल सकती है। यह पता चला कि "System.ComponentModel.DataAnnotations" संदर्भ के गुणों ने "विशिष्ट संस्करण = सत्य" का संकेत दिया, जब मैंने इसे "विशिष्ट संस्करण = गलत" में बदल दिया, तो यह समस्या तय हो गई। "संदर्भ" के तहत "System.ComponentModel.DataAnnotations" विधानसभा पर राइट क्लिक करें और संदर्भ मेनू से "गुण" चुनें। जाँच करें कि "विशिष्ट संस्करण = गलत" के लिए संपत्ति का मूल्य।

यह पुराने सिल्वरलाइट 4 असेंबली का संदर्भ दे रहा होगा जो सिल्वरलाइट 5 में अपग्रेड के बाद उपलब्ध नहीं था।


0

System.ComponentModel.DataAnnotations अपनी विधानसभा में निहित है, इसलिए आपको यह सुनिश्चित करने की आवश्यकता है कि आपने इसे संदर्भित किया है। बस:

1)। सॉल्यूशन पर राइट क्लिक करें और ऐड चुनें।

2)। सूची से संदर्भ चुनें।

3)। "System.ComponentModel.DataAnnotation" खोजें और चेक बॉक्स को इसके बाएँ हाथ पर टिक करें और ठीक दबाएँ।

नौकरी की, कोई भी त्रुटि नहीं होनी चाहिए।


0

मुझे भी यह समस्या है। यह बहुत बेवकूफ है जब मैं सिस्टम के साथ एक नाम स्थान जोड़ता हूं। मैं सभी संदर्भों को हटाने की कोशिश करता हूं, लेकिन यह हल नहीं होता है। मैं "वैश्विक :: System.ComponentModel" का उपयोग करता हूं, यह भी काम कर रहा है। जब मैं अपने नाम स्थान को हटाता हूं, तो यह समस्या हल हो गई है।


-6

मुझे भी यही समस्या थी, मैंने इस समस्या को इस तरह हल किया।

पेज पर राइट क्लिक करें, संपत्ति चुनें। निर्माण में चयन सामग्री।

आशा है कि यह समाधान आपकी मदद कर सकता है।


आप किस "पेज" का जिक्र कर रहे हैं? और यह कैसे मदद करता है?
20

1
खैर, यह वास्तव में गलत है। यदि आप निर्माण के दौरान प्रोजेक्ट तत्व को "सामग्री" के रूप में मानते हैं, तो यह अपना व्यवहार खो देगा। इसलिए यदि आप इसे एक कक्षा में करते हैं, तो इसे अब संकलित नहीं किया जाएगा और यह कोड कभी नहीं कहा जाएगा। इसके बजाय इसे प्रोग्राम संकलन आउटपुट के बायनेरिज़ के साथ फाइल के रूप में कॉपी किया जाएगा। यही कारण है कि आप संकलन त्रुटियों को प्राप्त करना बंद कर देंगे, लेकिन यह निश्चित रूप से संकलन समस्या का समाधान नहीं है।
इवलो स्लाव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.