सिस्टम क्यों है। Web.Mvc Add References में सूचीबद्ध नहीं है?


132

C #, Visual Studio 2010 का उपयोग करना।

MSDN पर System.Web.Mvc प्रलेखित एक नाम स्थान है । उस नाम स्थान के सभी प्रकारों के लिए दस्तावेज़ीकरण कहता है कि वे अंदर हैं System.Web.Mvc.dll

हालाँकि, जब मैं Add Reference, ".NET" टैब पर जाता हूं, तो यह असेंबली सूची से गायब है। क्यों?


1
क्या आप स्पष्ट कर सकते हैं: क्या आपकी परियोजना उस संदर्भ के बिना काम करती है? क्या यह आपके web.config (मेरा उत्तर देखें) में है?
बेसिक

4
मैं किसी प्रोजेक्ट पर काम नहीं कर रहा हूं। मैं बस यहाँ StackOverflow पर किसी की मदद करना चाहता था। मैं आमतौर पर किसी भी प्रकार के IntelliSense और / या F12 को देखने के लिए एक संदर्भ जोड़ता हूं। इस मामले में वांछित विधानसभा सूची से गायब थी, इसलिए मैंने पूछा कि क्यों।
टिमवी

1
इस पृष्ठ के पाठकों के लिए नोट - आज (2015-02-09) के रूप में इसे हल करने की विधि समय के साथ बदल गई है - सभी उत्तरों को पढ़ें - वीएस.नेट और .NET फ्रेमवर्क के विभिन्न संस्करण एमवीसी के लिए संदर्भित कोड को स्थानांतरित करते हैं। विभिन्न स्थानों के लिए।
qxotk

जवाबों:


106

वीएस एक्सप्रेस 2012 में मैं "असेंबली" टैब में System.Web.Mvc नहीं पा सका, लेकिन थोड़ी खोज के बाद मुझे पता चला कि मुझे डिफ़ॉल्ट "असेंबली" फ्रेमवर्क के बजाय " असेंबली \ एक्सटेंशन " टैब में देखने की आवश्यकता है “टैब।


1
आपके लिए +1 क्योंकि आपके पास मेरे पास मौजूद समस्या का मूल कारण है। मैंने नीचे दिए गए पेशेवरों की विधि का उपयोग करने के लिए चुना, और मैं वहाँ टिप्पणी करूँगा कि मैंने क्या किया।
19

मैंने इस विधि को Visual Studio समुदाय 2015 में आज़माया लेकिन मुझे संस्करण असंगतता ( Could not load file or assembly...The located assembly's manifest definition does not match the assembly reference) से संबंधित रनटाइम त्रुटि मिली । मेरे पास एक अलग संस्करण को संदर्भित करते हुए मेरे समाधान में एक और परियोजना है, और इस पद्धति ने मुझे केवल System.Web.Mvc, संस्करण = 4.0.0.0 के संदर्भ में जोड़ने की अनुमति दी। NuGet इंस्टॉल विधि ने सही संस्करण जोड़ा
NJS

101

सबसे अच्छा तरीका है NuGet पैकेज मैनेजर का उपयोग करना।

बस नीचे दिए गए MVC पैकेज को अपडेट करें और इसे काम करना चाहिए।

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


4
मैंने स्वीकार किया है कि यह ज्यादातर मामलों में MVC के संदर्भ को जोड़ने का सही तरीका है (यह आपको विजुअल स्टूडियो के बाहर ऐप चलाने के साथ समस्याओं को छोड़ना चाहिए जो खराब संदर्भ का कारण हो सकता है)। हालाँकि बड़े समाधानों में जो पहले से ही MVC के साथ कुछ प्रोजेक्ट्स हैं, लाइब्रेरी के समान संस्करण को स्थापित करने के लिए "समाधान के लिए NuGet पैकेज प्रबंधित करें" का उपयोग करना और भी बेहतर है। कारण, अगर आप उन्हें सिर्फ NuGet पैकेज मैनेजर से इंस्टॉल करते हैं, तो आप संस्करण असंगति के साथ समाप्त हो सकते हैं (प्रबंधक आमतौर पर आपको नवीनतम संस्करण की पेशकश करेगा)।
जाहू

2
मैंने MVC 4 का उपयोग करते हुए एक परियोजना के लिए उस समाधान का उपयोग किया है जो विज़ुअल स्टूडियो 2015 के साथ संकलित नहीं कर सकता है। यह यह भी सुनिश्चित करता है कि परियोजना पुस्तकालयों सभी विकासशील लोगों में समान हैं।
सीतमान

1
मुझे एक बॉक्स के साथ यह समस्या थी जिस पर केवल VS2015 था, जबकि अन्य टीम के सदस्यों के पास VS2013 था - जो कि उनके पास पुराने स्थान (कोई बिल्ड एरर नहीं) का संदर्भ दे सकता है जबकि मेरे पास कोड नहीं था और त्रुटियां नहीं थीं। ध्यान दें, आज के रूप में, मैं Microsoft.Web.Mvc नहीं खोज सका - जो कि इस मुद्दे का कारण थे। @Forderah के उत्तर में इस तथ्य पर प्रकाश डाला गया कि नुगेट में नाम अलग है। Microsoft.Web.Mvc अब Microsoft.AspNet.Mvc है, जो उसके उत्तर में सूचीबद्ध निर्भरता में भी खींचता है।
qxotk

1
मुझे VS2017 में भी यह समस्या थी, और इसने इसे ठीक किया। यह निश्चित नहीं है कि VS2017 ने मुझे क्यों बताया कि यह सोचता है कि जिस विधानसभा को संदर्भित करने की आवश्यकता है वह System.Web.Mvc है जबकि यह वास्तव में Microsoft.AspNet.Mvc की तलाश में है
माइकल डेविडसन

60

मैं एक ही मुद्दा था और System.Web.MVC संदर्भ विधानसभा का पता लगाने में सक्षम नहीं था।

अंत में पता चला और यह निम्नलिखित स्थान के अंदर स्थित था।

ध्यान दें कि यदि आपका VS C में स्थापित किया गया था: (कभी-कभी MVC.dll डिफ़ॉल्ट स्थान पर नहीं होता है, जिसके बारे में हर कोई बात करता है, मेरा मतलब है कि C: ड्राइव में स्थित " संदर्भ असेंबली " फ़ोल्डर।)

यदि इसका नहीं है, तो यह निश्चित रूप से यहां होना चाहिए:

\ प्रोग्राम फ़ाइलें (x86) \ Microsoft ASP.NET \ ASP.NET MVC 2 \ Assemblies \ System.Web.Mvc.dll

तो dll को नेविगेट करें या ऐड रेफरेंस मेनू में ब्राउज़ टैब के माध्यम से जोड़ें।


1
यह मेरे लिए संदर्भ प्राप्त करता है, हालांकि मुझे यकीन है कि मैंने पहले इस संदर्भ को फ्रेमवर्क असेंबली सूची के माध्यम से जोड़ा है।
ज़ारेफेथ

9
वास्तव में अच्छा समाधान नहीं है यदि आप वीसीएस के साथ एक टीम में काम करते हैं। इस मामले में पूर्ण मार्ग बुरे हैं।
डेनिस द मेनेस

निश्चित रूप से सहमत हैं कि किसी भी तरह के टीम विकास के माहौल में यह एक बुरा समाधान है क्योंकि हार्ड-कोडेड निरपेक्ष पथ निर्भरता है।
क्रेग

जिस तरह से आप चारों ओर पहुँचते हैं, यह सुनिश्चित करने के लिए है कि हर कोई DLL के लिए समान पथ का उपयोग कर रहा है। यह समस्या नहीं होनी चाहिए अगर सभी टीम के सदस्यों के पास उस स्थान पर असेंबली स्थापित की जाए, जैसा कि उन्हें होना चाहिए। वैकल्पिक रूप से, DLL को उस पथ से कॉपी किया जा सकता है, और सीधे प्रोजेक्ट में रखा जा सकता है, इसलिए इसका एक सापेक्ष पथ है। लेकिन किसी भी तरह, बस उस स्थान पर जहां DLL है, एक अच्छा प्रारंभिक बिंदु है।
vapcguy

इससे वास्तव में मदद मिली; लेकिन Microsoft को इसे और अधिक स्वच्छ और आसान बनाना चाहिए था ....
जोसेफोग्गी

28

आप इसे Nuget Package Manager कंसोल से भी जोड़ सकते हैं, जैसे कुछ:

Install-Package Microsoft.AspNet.Mvc -Version 4.0.20710.0 -ProjectName XXXXX

Microsoft.AspNet.Mvc पर निर्भरताएं हैं:

  • 'Microsoft.AspNet.WebPages (7 2.0.20710.0 && <2.1)'
  • 'Microsoft.Web.Infrastructure (.W 1.0.0.0)'
  • 'Microsoft.AspNet.Razor (.A 2.0.20710.0 और& <2.1)'

... जो मेरे लिए कोई बड़ी बात नहीं है। हमारे मामले में, यह एक वर्ग पुस्तकालय है जो हमारे एमएक्स ऐप के लिए समर्थन प्रदान करने के लिए पूरी तरह से मौजूद है। इसलिए, हम इसे सबसे खराब निर्भरता के रूप में देखते हैं।

मैं निश्चित रूप से फ़ाइल सिस्टम या GAC में असेंबली को इंगित करने के लिए इसे पसंद करता हूं, क्योंकि भविष्य में पैकेज को अपडेट करने की संभावना उन अनुभवों की तुलना में बहुत कम दर्दनाक होगी जो मैंने पिछले दिनों जीएसी और फ़ाइल सिस्टम असेंबली संदर्भों के साथ किए हैं।


1
मैंने इस पद्धति का उपयोग किया है, और मैं संदर्भों में स्थानीय निरपेक्ष पथों का उपयोग नहीं करने से सहमत हूं। मैंने NuGet पैकेज मैनेजर का उपयोग किया, पैकेज और निर्भरता को जोड़कर मेरे VS2015-केवल बॉक्स पर समस्या को ठीक किया।
qxotk

11

मेरे पास एक ही समस्या है और यहाँ मज़ेदार कारण है: मेरा अनुमान है कि आप सूची में System.Web.Mvcस्थित होने की उम्मीद करते हैं System.Web। लेकिन सूची वर्णमाला की नहीं है।

पहले सूची को क्रमबद्ध करें और फिर पास देखें System.Web


1
यह भी सुनिश्चित करें कि आपको सही संस्करण मिल रहा है। मेरे मामले में System.Web.Mvc v2 और v4 हैं, और वे भी एक दूसरे के बगल में नहीं हैं।
टीटीटी

एक ही समस्या थी System.Web.Mvc खोजने के लिए एक ही कारण है। मैं इसके बजाय Microsoft.AspNet.Mvc के साथ गया, यह देखने के लिए सुनिश्चित करें कि मेरे समाधान में अन्य परियोजनाएं संस्करण संख्या के संबंध में क्या उपयोग कर रही हैं।
qxotk

5

"ठीक है, उस XML को Web.config में जोड़ना काम करता है, लेकिन यह सवाल का जवाब नहीं देता है"

यह वहाँ होना चाहिए। डिफ़ॉल्ट रूप से जोड़ें संदर्भ सूची का आदेश दिया जा रहा है, लेकिन इसका मामला नहीं है। नाम हेडर मारो और फिर से देखो।


मैं अक्सर यह नहीं कहता कि "यह विधानसभा सूची से गायब है" जब तक मैं इसके बारे में सुनिश्चित नहीं हूं।
तिमवी

@ टिमिमा मैं समझ गया, लेकिन दूसरा जवाब देते हुए, कि वहाँ वी मौका कम है कि इसके साथ वहाँ नहीं है बनाम 2010 स्थापित और मेरे मामले में मैंने हमेशा पाया है कि मुझे कभी भी नाम हेडर मारने के बिना संदर्भ सूची में क्या चाहिए था। यह कहने के लिए ... वास्तव में, मुझे अब पता है कि मुझे पहले और बनाम 2010 में ऐसा क्यों नहीं हुआ - पहली टिप्पणी देखें: weblogs.asp.net/scottgu/archive/2009/10/29/…
eglasius

तो क्या आप कह रहे हैं कि नाम हेडर पर क्लिक करने से आपके लिए चीजें बनती हैं? मेरी मशीन पर यहाँ कुछ भी नहीं है ...
रोमन स्टार्कोव

1
@romkyns यह केवल सूची में सभी विधानसभाओं के लोड होने के बाद काम करता है।
इगलासियस

5

इन चरणों की जाँच करें:

  1. चेक MVC ठीक से स्थापित है।
  2. परियोजना की संपत्ति की जाँच करें और देखें कि परियोजना लक्ष्य रूपरेखा क्या है। यदि लक्ष्य फ्रेमवर्क .Net फ्रेमवर्क 4 पर सेट नहीं है, तो इसे सेट करें।

नोट : यदि लक्ष्य फ़्रेमवर्क .Net फ्रेमवर्क 4 क्लाइंट प्रोफ़ाइल पर सेट है, तो यह संदर्भ सूची पर MVC संदर्भ को सूचीबद्ध नहीं करेगा। आप नेट फ्रेमवर्क 4 और नेट फ्रेमवर्क 4 ग्राहकों का प्रोफाइल के बीच विभिन्न पा सकते हैं यहाँ

.NET फ्रेमवर्क 4 क्लाइंट प्रोफाइल .NET फ्रेमवर्क 4 का एक सबसेट है जो क्लाइंट एप्लिकेशन के लिए अनुकूलित है। यह ज्यादातर क्लाइंट एप्लिकेशन के लिए कार्यक्षमता प्रदान करता है, जिसमें विंडोज प्रेजेंटेशन फाउंडेशन (डब्ल्यूपीएफ), विंडोज फॉर्म, विंडोज कम्युनिकेशन फाउंडेशन (डब्ल्यूसीएफ) और क्लिकऑन फीचर शामिल हैं। यह .NET Framework 4 क्लाइंट प्रोफ़ाइल को लक्षित करने वाले अनुप्रयोगों के लिए तेज़ परिनियोजन और एक छोटा इंस्टॉल पैकेज सक्षम करता है।


यह एक अच्छी टिप थी। जब मैं अपनी परियोजना के गुणों के लिए गया था, तो यह केवल .NET कोर 1 और 2 सूचीबद्ध था। कोई .NET फ्रेमवर्क 4.x. मुझे अपनी सूची में विधानसभाएं याद आ रही थीं। यह बताता है कि मैंने अपनी परियोजना कैसे बनाई थी - मैंने गलत विकल्प चुना - .NET फ्रेमवर्क के बजाय .NET कोर का उपयोग करने के लिए। अब मुझे फर्क पता है। :)
vapcguy

4

मैंने "mvc" खोजकर इस समस्या को हल किया। System.Web.Mvc खोज परिणामों में दिखाई दिया, इसके बावजूद यह सूची में शामिल नहीं है।


3

वांछित विधानसभा अब सूची में दिखाई दी है।

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


यह हमेशा निश्चित रूप से हमेशा वहाँ था, इसकी ठीक है: पी ... टिप्पणी को देखें जो मैंने अपने उत्तर में जोड़ा था, लिंक में कहा गया है: ".net टैब के साथ मुद्दा, जबकि एसिंक्स हो रहा है और इसे ताज़ा किया जा रहा है," वर्णमाला के क्रम में नहीं छंटनी ... "... जो कि 2010 के लिए एक नया व्यवहार है, मुझे कभी भी यह एहसास नहीं हुआ कि जब तक मैंने आपका सवाल नहीं देखा।
इगलासियस

@ मुझे केवल मेरी मशीन पर यहाँ परीक्षण किया गया (VS2010) और यह सूची में बिल्कुल भी नहीं है। मुझे लक्ष्य रूपरेखा के आधार पर विधानसभाओं के विभिन्न सेट मिलते हैं, लेकिन यह कभी नहीं होता है।
रोमन स्टार्कोव

@romkyns .net 4 को लक्षित करने का प्रयास करते हैं, और जो मैंने अपने उत्तर में उल्लेख किया है वह कर रहा हूँ। यह भी सुनिश्चित करें कि इसे लोड करने के लिए पर्याप्त समय दिया जाए, क्योंकि यह एक async लोड करता है।
इगलासियस

2

यह विज़ुअल स्टूडियो 2012 के लिए बदल गया है (मुझे पता है कि मूल प्रश्न VS2010 कहता है, लेकिन शीर्षक अभी भी खोजों पर हिट होगा)।

जब आप VS2012 MVC प्रोजेक्ट बनाते हैं, तो system.web.mvc संकुल फ़ोल्डर में रखा जाता है जो समाधान के लिए सहकर्मी होता है। यह डिफ़ॉल्ट रूप से वेब प्रोजेक्ट में संदर्भित किया जाएगा और आप वहां सटीक पथ पा सकते हैं)।

यदि आप इसे एक द्वितीयक परियोजना में कहना चाहते हैं (फ़िल्टर या अन्य विशेषताओं के साथ एक .dll का समर्थन करें), तो आप इसे वहां से संदर्भित कर सकते हैं।


2

मुझे 2012 में System.Web.Mvc नहीं मिला, लेकिन मुझे यह VS 2013 में मिला। AddReference Dialog का उपयोग करके, यहाँ छवि विवरण दर्ज करें

या, आप इसे अपने प्रोजेक्ट पथ में पा सकते हैं,

YourProjectName \ संकुल \ Microsoft.AspNet.Mvc.5.0.0 \ lib \ net45 \ System.Web.Mvc.dll


मौजूदा प्रोजेक्ट पथ में खोजने के लिए शानदार टिप। धन्यवाद!
एलन

0

मेरा मानना ​​है कि आप MVC विधानसभा web.config फ़ाइल में संदर्भित है, परियोजना में ही नहीं है।

कुछ इस तरह:

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
  </assemblies>
</compilation>

आपकी टिप्पणी का जवाब देने के लिए;

सबसे अच्छा जवाब मैं यहाँ से दे सकता हूँ :

डायनामिक संसाधन के संकलन के दौरान उपयोग करने के लिए ऐड एलिमेंट एक असेंबली रेफरेंस जोड़ता है। प्रत्येक कोड मॉड्यूल को संकलित करते समय ASP.NET स्वचालित रूप से इस असेंबली को संसाधन से जोड़ता है।


ठीक है, उस XML को Web.config में जोड़ना काम करता है, लेकिन यह सवाल का जवाब नहीं देता है।
टिमवी

"काम करता है" के रूप में यह intellisense प्रदान करता है? मैंने अपना उत्तर
बेसिक

0

इसे अलग से स्थापित किया जा सकता है, और इसे फ्रेमवर्क में शामिल नहीं किया गया है, टैब सूची "एक्सटेंशन" चुनें और यह मौजूद है और अधिक से अधिक अन्य लिबास हैं, सभी पुराने लिबास आदि का उपयोग करने की आवश्यकता नहीं है, पुराने 20 30 और 4001 मौजूद हैं


0

यदि आपको विजुअल स्टूडियो 2017 में यह समस्या मिली है, तो संभावना है कि आप वीवीसी के पिछले संस्करण में एक एमवीसी 4 प्रोजेक्ट के साथ काम कर रहे हों, जो एक पॉइंट हिंट पाथ की ओर इशारा करता है C:\Program Files (x86)\Microsoft ASP.NET। Visual Studio 2017 इस निर्देशिका को अब स्थापित नहीं करता है।

हम आमतौर पर हमारे 2017 के उदाहरण के साथ विजुअल स्टूडियो 2015 की एक प्रति स्थापित करके इसे हल करते हैं, और यह उपरोक्त पथ में आवश्यक पुस्तकालयों को स्थापित करता है। फिर हम प्रभावित परियोजनाओं में सभी संदर्भों को अपडेट करते हैं और हम जाने के लिए अच्छे हैं।

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