जब मुझे MEF प्लगइन प्रोजेक्ट का संदर्भ मिलता है तो मुझे चेतावनी चिह्न क्यों मिलता है?


321

मैं सीधे प्लगइन परियोजना को संदर्भित करके और प्लगइन वर्ग को तात्कालिक करके एक प्लगइन के मुख्य वर्ग का परीक्षण करना चाहता हूं। जब मैं एक परीक्षण कंसोल ऐप प्रोजेक्ट बनाता हूं और प्लगइन प्रोजेक्ट में प्रोजेक्ट संदर्भ जोड़ता हूं, तो मुझे संदर्भ सूची में संदर्भ के बगल में एक चेतावनी आइकन (विस्मयादिबोधक चिह्न के साथ पीला त्रिकोण) मिलता है।

जब मैं इसके बजाय dll का संदर्भ जोड़ता हूं, तो प्लगइन का असेंबली बिल्ड आउटपुट, मुझे ऐसी कोई चेतावनी नहीं मिलती है। यह चेतावनी मुझे क्या बताने की कोशिश कर सकती है?


8
अधिकांश समय, चेतावनी त्रिकोण में उपकरण युक्तियां होंगी (या यह विफल रही) त्रुटियों विंडो में एक प्रविष्टि। एक अनुमान के अनुसार, दोनों परियोजनाओं में असंगत निर्भरताएं हैं।
डेमियन_इन_यूएनबेलिवर

2
निर्माण की कोशिश करते समय कंसोल में कोई चेतावनी?
जितेव

231
मैंने इसे अलग-अलग .net
framwork

4
@ आप kad81 के उत्तर को सही एक के रूप में चुन सकते हैं
एंडी

5
यह मुझे हमेशा मिलता है। .NET 4 समाधान के लिए एक नया प्रोजेक्ट जोड़ना और डिफ़ॉल्ट 4.5 है।
रॉबिन फ्रेंच

जवाबों:


674

जैसा कि प्रश्न की टिप्पणियों में उल्लेख किया गया है, परियोजनाओं के बीच .NET फ्रेमवर्क संस्करणों को अलग करना इसका कारण हो सकता है। यह सुनिश्चित करने के लिए अपने नए प्रोजेक्ट के गुणों की जाँच करें कि एक अलग डिफ़ॉल्ट संस्करण का उपयोग नहीं किया जा रहा है।


13
मुझे यह भी जानना चाहिए कि दृश्य स्टूडियो ने उन संदर्भों को जोड़ना क्यों स्वीकार किया?
एंडर्स लिंडेन

16
मैं वीएस 2015 का उपयोग कर रहा हूं और समस्या अभी भी है। जब तक मैं यहां नहीं आया तब तक मैं आधा घंटा गंवा चुका हूं।
एलिसन

14
यहां तक ​​कि किसी भी होवर टेक्स्ट या बिल्ड एरर को यह समझाने में नहीं कि समस्या क्या है
matao

6
पुष्टि कर सकते हैं कि यह मुद्दे की जड़ थी। यह भी पुष्टि कर सकता है कि 15.3 अपडेट के साथ विजुअल स्टूडियो 2017 ने अभी भी वास्तव में एक सार्थक संदेश नहीं दिखाने के मुद्दे को संबोधित नहीं किया है। बहुत कष्टप्रद।
ग्रेग आर टेलर

4
@ माताओ सहमत! इसके कष्टप्रद मुझे त्रुटि के बारे में कोई विवरण नहीं मिल सका ...
nterry

74

एक ASP.Net वेब ऐप और दो लाइब्रेरी क्लास प्रोजेक्ट्स के साथ एक ही समस्या का सामना करना पड़ा जिसे वेब ऐप के भीतर संदर्भित करने की आवश्यकता है। मुझे इस बात की कोई जानकारी नहीं थी कि निर्माण विफल क्यों हुआ और संदर्भ अमान्य थे।

समाधान यह सुनिश्चित करने के लिए था कि सभी परियोजनाओं का लक्ष्य एक ही हो:

विजुअल स्टूडियो 2015 में- राइट क्लिक प्रोजेक्ट> प्रॉपर्टीज> एप्लीकेशन> टार्गेट फ्रेमवर्क

सहेजें, स्वच्छ और पुनर्निर्माण समाधान। परियोजना के संदर्भ अब पीले चेतावनी के रूप में प्रकट नहीं होने चाहिए और समाधान संकलित करेंगे।

मेरा वेब ऐप लक्ष्य .Net 4.5 था जबकि अन्य दो आश्रित लाइब्रेरी क्लास प्रोजेक्ट्स लक्षित .Net v4.5.2


44

उन (या सभी) परियोजनाओं के लिए जिन्हें आप एक साथ उपयोग करना चाहते हैं:

प्रोजेक्ट> गुण> अनुप्रयोग> लक्ष्य .NET फ्रेमवर्क पर राइट क्लिक करें

सुनिश्चित करें कि दोनों (या सभी) आपकी परियोजनाएँ एक ही .NET फ्रेमवर्क संस्करण का उपयोग कर रही हैं।


बिल्कुल सही, मेरे लिए काम किया! मेरे पास .NET फ्रेमवर्क 4.5.2 के साथ एक MVC प्रोजेक्ट था। और मेरे वर्ग पुस्तकालय जो इसे संदर्भित कर रहे हैं। .NET फ्रेमवर्क 4.7 थे।
माइक अपजॉन

कोई यह सोचेगा कि मौजूदा समाधान में जोड़े गए नए प्रोजेक्ट क्या संस्करण जानने के लिए पर्याप्त स्मार्ट होंगे, लेकिन दुख की बात नहीं है।
रॉन

38
  1. सुनिश्चित करें कि सभी संस्करण समान हैं प्रत्येक प्रोजेक्ट के लिए प्रत्येक प्रोजेक्ट पर क्लिक करें और यहाँ संस्करण देखें प्रोजेक्ट> गुण> अनुप्रयोग> लक्ष्य .NET फ्रेमवर्क
  2. ए। उपकरण> Nuget पैकेज प्रबंधक> पैकेज प्रबंधक कंसोल प्रकार अद्यतन-पैकेज -Reinstall (के लिए आगे बढ़ना काम नहीं कर रहा है, तो 2.b )

    ख। यह सबसे बड़ी स्थिति है, जो सबसे अधिक काम करेगानिकालें <लक्ष्य> शायद कई लाइनों के साथ </ लक्ष्य> आमतौर पर .csproj के निचले भाग में पाया जाता है।

  3. सहेजें, लोड करें और समाधान का निर्माण करें।


1
उसके लिए धन्यवाद, .net संस्करणों के बारे में विज़ुअल स्टूडियो में एक अच्छा त्रुटि संदेश यहाँ भटक नहीं जाएगा!
बृहस्पतिवार

1
यदि आप आउटपुट विंडो को साफ करते हैं तो @colmde दिलचस्प तरीके से आउटपुट विंडो को निम्न संदेश प्रदर्शित करता है: 'पैकेज टारगेट फ्रेमवर्क के बजाय .NetFramework XXX का उपयोग करके बहाल किया गया था। .NETFramework XXX। पैकेज आपकी परियोजना के साथ पूरी तरह से संगत नहीं हो सकता है '
एल्सेज़ियस

1
भाग 2. बी जो अन्य उत्तरों में नोट नहीं किया गया था, मेरे लिए महत्वपूर्ण था! 2. बी निकालें <लक्ष्य> शायद कई लाइनों के साथ </ लक्ष्य> आम तौर पर .csproj के निचले भाग में पाया जाता है।
शेलबिपेरेरा

1
भाग 2. बी पूरी तरह से पागल है लेकिन यह काम करता है! धन्यवाद
एलो

1
धन्यवाद 2.b ने मेरे लिए भी चाल चली। क्या कभी यह पता नहीं चला है।
हेनरिक क्लॉसन

23

वर्तमान समाधान की सभी परियोजनाओं में सभी संकुल पुनः स्थापित करें:

Update-Package -Reinstall

2
हालाँकि इस सुझाव ने मेरे मुद्दे को सीधे हल नहीं किया, लेकिन इसने मुझे मेरे परिदृश्य के लिए सही दिशा में इशारा किया। उन लोगों के लिए जो इसे मदद कर सकते हैं, मुझे वास्तव में डाउनलोड करने के लिए सही संस्करण खोजने के लिए अपडेट-पैकेज के लिए अपने NuGet पैकेज स्रोत को v3 में बदलना पड़ा: docs.nuget.org/consume/package-manager-dialog#package-source
John Lee

1
इसने सभी पैकेजों को हटा दिया, उन्हें स्थापित किया और पीले त्रिकोण वापस आ गए।
एंडर्स लिंडन

8

सुनिश्चित करें कि आपके पास समान फ्रेमवर्क संस्करण को लक्षित करने वाली परियोजनाएं हैं । अधिकांश बार कारण यह होगा कि वर्तमान परियोजना (जहां आप किसी अन्य परियोजना का संदर्भ जोड़ रहे हैं) अंक बाकी लोगों की तुलना में एक अलग .net फ्रेमवर्क संस्करण की ओर इशारा करते हैं


5

संदर्भित dll और प्रोजेक्ट का NETFramework जांचें जहां आप DLL जोड़ रहे हैं। Ex: DLL ==> supportRuntime संस्करण = "v4.0" प्रोजेक्ट ==> supportRuntime संस्करण = "= 3.33"

आपको चेतावनी आइकन मिलेगा। समाधान: डीएल संस्करण की संगति बनाएं।


5

मेरे लिए, मैं .NET फ्रेमवर्क 4.7.1 कंसोल एप्लिकेशन में .NET मानक 2.0 क्लास लाइब्रेरी का संदर्भ देते समय इस समस्या में भाग गया। हां, फ्रेमवर्क अलग-अलग हैं, लेकिन वे संगत हैं (.NET मानक .NET कोर और .NET फ्रेमवर्क दोनों के साथ जिव करने वाला है। मैंने प्रोजेक्ट रेफरेंस आदि की सफाई, पुनर्निर्माण, हटाने और पढ़ने की कोशिश की ... कोई सफलता नहीं है। । अंत में, विजुअल स्टूडियो को छोड़ने और फिर से खोलने से समस्या हल हो गई।


4

यह प्रश्न पूछे जाने के बाद एक लंबा समय हो गया है, लेकिन अगर किसी को अभी भी दिलचस्पी है - मैं हाल ही में समान आइकन में भाग गया। मैं VS # 2008 का उपयोग करके C # .net प्रोजेक्ट को संकलित कर रहा था। मैंने पाया कि VS उन संदर्भों के लिए असेंबली का पता नहीं लगा सका। जब मैंने डबल क्लिक किया वीएस ने संदर्भों को ताज़ा किया और उनमें से कुछ [EDIT: जिसे यह अब पता लगा सकता है] पर आइकन हटा दिए। शेष संदर्भों के लिए, मुझे संबंधित विधानसभाओं को संकलित करना था।


4

मेरे 2 सेंट को @ kad81 उत्तर में जोड़ना,

Visual Studio -> BUILD -> कॉन्फ़िगरेशन प्रबंधक पर जाएँ

"एक्टिव सॉल्यूशन प्लेटफ़ॉर्म" में टॉप राईट हैंड कॉर्नर (मेरा वीएस 2012 है) ड्रॉप डाउन होता है, अगर यह "मिक्स्ड प्लेटफ़ॉर्म" है, तो इसे अपने संदर्भ थर्ड पार्टी असेंबली के आधार पर उपयुक्त प्लेटफ़ॉर्म पर बदलें।

फिर सूची में प्रत्येक परियोजना में, सुनिश्चित करें कि आप सभी परियोजना के लिए एक ही मंच का चयन करते हैं। (यदि x86 मौजूद नहीं है, तो "" का चयन करें, फिर आप "x86" का चयन कर सकते हैं।)

पहले लाइब्रेरी प्रोजेक्ट्स का पुनर्निर्माण करें और फिर प्रोजेक्ट्स का संदर्भ दें। उम्मीद है की यह मदद करेगा।


4

बंद करने और खोलने की कोशिश करें वी.एस.

मूर्खतापूर्ण लगता है, लेकिन उपरोक्त का 1 घंटे के बाद और सब कुछ ठीक लग रहा है। मैंने वीएस 2017 को फिर से शुरू किया और समस्याएं दूर हो गईं।


1
मेरे लिए काम किया। मूर्खतापूर्ण या कभी-कभी, दृश्य स्टूडियो भ्रमित हो जाता है और यह कैश खराब हो जाता है। यह सुझाव देने के लिए धन्यवाद - ऐसा करने से नफरत है क्योंकि मुझे लगा कि यह सोचकर बेवकूफ काम करेगा लेकिन क्या "बिल्ली" - एक घंटे के बाद अन्य चीजों के साथ-साथ मैं भी काम कर सकता हूं और यह काम किया है
ब्लेक

2

यदि आप प्रोजेक्ट का नाम स्थान या नाम बदलते हैं तो Asp.net कोर में यह कुछ समय के लिए अलर्ट दिखाता है। इस तरह के अलर्ट को हटाने के लिए आप बस प्रोजेक्ट को अनलोड करें और फिर से लोड करें। यदि समस्या अभी भी है, तो इसका मतलब है कि आप अपना विधानसभा संदर्भ नहीं पा सकते हैं।


1

मेरे पास ये आइकन एक अलग कारण से थे। हमारे पास हमारी सभी परियोजनाओं (लगभग 100) के लिए एक बड़ा समाधान है। जिन परियोजनाओं में मेरी दिलचस्पी थी और मैंने एक नया समाधान बनाया, मैंने उनका एक सबसेक्शन किया। हालांकि संदर्भ जहां संकलित dll के संदर्भों के बजाय परियोजना संदर्भ हैं ...।

कुछ शोध के बाद मुझे GitHub पर यह लिंक मिला जो बताता है कि यह VS2015 में नया व्यवहार है।

GitHub पृष्ठ पर वे परियोजना संदर्भों को द्विआधारी संदर्भों में परिवर्तित करने के लिए एक समाधान की व्याख्या करते हैं।


1

कुछ काम नहीं कर रहे सामान को ठीक करने के लिए इसे हटाने की भावना है कभी-कभी कुछ पुस्तकालयों होती है, यह अजीब नहीं होगा।

वैसे भी, मेरा मानना ​​है कि समस्या बहुत व्यापक है और विभिन्न कारकों के कारण हो सकती है , इसलिए मेरी स्थिति / समाधान साझा करना चाहते हैं।

मेरे पास ज़मीरिन फॉर्म्स और टेलरिक लाइब्रेरी के साथ एक प्रोजेक्ट (ग्राहक द्वारा लाया गया) था। बात सामान्य रूप से घटकों से संबंधित थी, जो पुस्तकालयों को पैकेज फ़ोल्डर में शामिल नहीं किया गया है, और न ही नगेट (भुगतान वाले) के माध्यम से उपलब्ध है।

पूरी परियोजना के संदर्भ "पीले" थे, यह बहुत भयानक और डरावना लग रहा था।

समाधान सिर्फ था दूर करने के लिए उन Telerik संदर्भ (कोड में कुछ नियंत्रण जो कि इस्तेमाल कर रहे थे सहित)। ठीक इसके बाद सभी संदर्भों को जादुई रूप से सामान्य ग्रे रंग मिला और त्रुटियां (अधिकतर) गायब हो गईं।

"अधिकतर" - क्योंकि "सभी लाल चारों ओर" त्रुटि संदेश "तत्व कहीं भी परिभाषित नहीं है" कभी-कभी होता है। यह अजीब है, और असुविधा लाता है, लेकिन मैं अभी भी परियोजना को संकलित करने और चलाने में सक्षम हूं: बस समाधान की आवश्यकता है, विजुअल स्टूडियो को पुनरारंभ करें, थोड़ी प्रार्थना करें, फिर से साफ करें, obj / bin फ़ोल्डरों को हटा दें, फिर से शुरू करें, और इसे फिर से शुरू करें अच्छा काम करता है।

मुख्य बात यह है कि उपलब्ध पुस्तकालयों संदर्भों को हटा नहीं है , क्योंकि त्रुटि संदेश बिल्कुल अन्य सामान कहते हैं। (उदाहरण के लिए, कुछ "Xamarin.Build.Download.XamarinDownloadArchives नहीं मिला या कुछ मिल नहीं सकता" आदि, लेकिन इसका मतलब है कि आपके पास कुछ संदर्भ उपलब्ध नहीं हैं।

फिर संकुल फ़ोल्डर निकालें, प्रोजेक्ट / समाधान को फिर से लोड / फिर से खोलें, "नगेट पैकेज प्रबंधित करें" पर जाएं और "पुनर्स्थापना" बटन पर क्लिक करें।


1

सभी परियोजनाओं के लक्ष्यीकरण के साथ विज़ुअल स्टूडियो 2019 का उपयोग करना। नेट कोर 3.1 इसका समाधान था:

  1. स्वच्छ / निर्माण / पुनर्निर्माण।
  2. Visual Studio 2019 को पुनरारंभ करें

0

मुझे भी इसी समस्या का सामना करना पड़ा लेकिन मेरा मामला ऊपर वाले से थोड़ा अलग था। मैंने एक अलग कंप्यूटर में बनाई गई परियोजना को खोलने की कोशिश की। मैंने पाया कि जब आप एक संदर्भ जोड़ते हैं तो पैकेज फ़ोल्डर का पथ अद्यतन नहीं किया जाता है, इसलिए वी.एस. को पुनरारंभ करना, .NET संस्करण को बदलना, या किसी भी उल्लेखित सिफारिश से समस्या का समाधान नहीं होता है। मैंने नोटपैड ++ में csproj फ़ाइल खोली और संकुल फ़ोल्डर में सभी रिश्तेदार पथों को ठीक किया। फिर; सभी चेतावनी दी गई हैं। आशा है ये मदद करेगा।



0

मदद के लिए सभी का धन्यवाद। यहाँ बताया गया है कि मैंने अपनी समस्या कैसे तय की:

अपनी परियोजना> संपत्तियों पर राइट क्लिक करें

एप्लिकेशन के तहत लक्ष्य फ्रेमवर्क बदलें। मेरे मामले में ImageSharp .net 4.6.1 का उपयोग कर रहा था। आप इसे अपने पैकेजों में पा सकते हैं ।config

अपने प्रोजेक्ट संदर्भों पर जाएं। आप देखेंगे कि सिलेबर्स में एक पीला त्रिकोण है। आपको NuGet पैकेज अपडेट करना होगा।

संदर्भों पर राइट क्लिक करें> NuGet पैकेज प्रबंधित करें।

सिक्सलैबर्स को अपडेट करें।

आपके पास मामूली कोड अपडेट हो सकते हैं (नीचे देखें) लेकिन इससे मेरी समस्या ठीक हो गई।

कन्वर्ट ImageSharp.Image ImageSharp.PixelFormats.Rgba32 में?


0

विजुअल स्टूडियो 2019 में, मेरा एक प्रोजेक्ट टारगेट फ्रेमवर्क था। नेट कोर लेकिन यह एक अन्य प्रोजेक्ट का उल्लेख कर रहा था, जिसका टारगेट फ्रेमवर्क मानक था। मैंने सभी परियोजनाओं को संदर्भ .net मानक में बदल दिया और आइकन चले गए। यह देखने के लिए कि आपकी परियोजना सही है या नहीं और गुणों पर क्लिक करें और लक्ष्य रूपरेखा देखें। आप सामान्य रूप से प्रोजेक्ट को स्वयं क्लिक कर सकते हैं और <TargetFramework> टैग के अंतर्गत <PropertyGroup> को देख सकते हैं


0

मल्टी-प्रोजेक्ट समाधान में, यदि हर दूसरी चीज़ विफल हो गई ... स्टार्टअप प्रोजेक्ट पर, जांचें। निर्भरताएँ-> असेंबलियाँ और देखें कि क्या गलत संदर्भित प्रोजेक्ट है। इसे निकालें और फिर से बनाएँ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.