प्रकार 'अभिव्यक्ति <>' एक विधानसभा में परिभाषित किया गया है जिसे संदर्भित नहीं किया गया है


84

ASP.NET MVC 4.5.2 फ्रेमवर्क में।

टाइप करने के बाद

@Html.LabelFor()
or 
@Html.EditorFor()

दृश्य में

मुझे त्रुटि मिल रही है: प्रकार 'अभिव्यक्ति <>' एक विधानसभा में परिभाषित किया गया है जिसे संदर्भित नहीं किया गया है। आपको विधानसभा 'System.Core, संस्करण = 4.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = b77ac561934e089' का संदर्भ जोड़ना होगा।

मैंने असेंबली संदर्भ System.Core.dll, संस्करण 4.0.0.0, रनटाइम संस्करण v4.0.30319 को जोड़ा है। और मैं भी web.config में किया था


जवाबों:


41

मैं आप के रूप में एक ही मुद्दे में चला गया, यद्यपि बहुत बाद में। मुद्दा यह था कि मैं रेजर व्यूज (.cshtml) को एक्सेस नहीं कर पा रहा था क्योंकि मुझे यह बताते हुए एक त्रुटि हो रही थी कि मेरे पास एक असेंबली असेंबली का संदर्भ System.Web.Mvcथा, भले ही यह प्रोजेक्ट रेफरेंस में था। जांच के बाद, मैंने देखा है कि स्थापित NuGet संस्करण 5.2.3 था, जबकि परियोजना को 5.2.0 की आवश्यकता थी। समाधान एमवीसी संस्करण को डाउनग्रेड करना है।

  1. Project-> NuGet Package Manager में जाएं।
  2. MVC के लिए खोजें; यह पहला परिणाम होने जा रहा है।
  3. अगला NuGet पैकेज के विवरण में ड्रॉप-डाउन से डाउनग्रेड का चयन करना है और सबमिट करना है।

सभी संवादों की पुष्टि करें और आप जाने के लिए तैयार हैं।


14
आपने अपनी परियोजना को 5.2.0 की आवश्यकता कैसे नोटिस की?
7

3
मुझे लगता है कि यह .NET फ्रेमवर्क संस्करण पर निर्भर करता है: .NET 4.5.2 -> MVC 4.0.0; .NET 4.6.0 -> MVC 5.2.0; .NET 4.6.1 -> MVC 5.2.3। (पुष्टि नहीं)
जोआओरिबेरो

9
मैं .net 4.7 का उपयोग कर रहा हूं और अभी भी यह कष्टप्रद त्रुटि है
स्वेन

1
मेरे पास एक ही मुद्दा था, पता चला कि यह वेब में मेरा डिबग मान था। गलत पर सेट किया गया था। इसे "True" <संकलन डीबग = "true" targetFramework = "4.5" /> <httpRuntime targetFramework = "4.5" />
mlaribi

मैंने उपरोक्त समाधान की कोशिश की है कि वह अच्छी तरह से काम करे। मेरा वीएस सॉल्यूशन संस्करण 4.6.2 का था और मैंने एमवीसी को 5.2.4 से 5.2.3 पर डाउनग्रेड कर दिया था। मुझे पता चला कि एमवीसी 5.2.3 .Net 4.6.2 के साथ संगत है
इब्राहिम इनाम

58

मुझे यकीन नहीं है कि आप अभी भी इस मुद्दे पर हैं या नहीं, लेकिन मैं एक ही मुद्दा रहा था।

मैं यहाँ समाधान खोजने में सक्षम था

/programming/6496223/compilation-error-in-net-4-0-web-config-linq-not-found

<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

आशा है कि ये आपकी मदद करेगा..


पहले से ही मैंने कहा कि .. मैं इस सवाल पोस्ट करने से पहले यह एक कोशिश की है। किसी भी तरह से आप दोनों का धन्यवाद
mansoor

1
ठीक! यह काम करता हैं। ध्यान दें कि आपको प्रभावी होने के लिए cshtml फ़ाइल को बंद करना और फिर से खोलना चाहिए।
महदी अताओल्लाहि

एक बार जब मैंने सभी web.configs के माध्यम से मेरे लिए काम किया और सुनिश्चित किया कि संस्करण stackoverflow.com/a/37381294/8684119
AMG

यह काम करता है, लेकिन मैंने इस समाधान को थोड़ा गंदा पाया। वैसे भी, मेरे मामले में मैं केवल System.Core
T-moty

45

इस त्रुटि का मतलब है कि विज़ुअल स्टूडियो System.Web.Mvc असेंबली का पता लगाने में असमर्थ है। इसे ठीक करने के लिए निम्नलिखित में से एक या दोनों की आवश्यकता हो सकती है।

  1. मुख्य web.config (वेबसाइट रूट में एक) में संकलन संपत्ति के लिए .NET फ्रेमवर्क के संस्करण को सुनिश्चित करें कि परियोजना के गुणों में निर्दिष्ट है।

[जड़] /Web.config:

<system.web>
    <compilation targetFramework="4.6" />

परियोजना के गुण:

परियोजना के गुण

  1. विचारों में निर्दिष्ट MVC असेंबली के संस्करण को सुनिश्चित करें web.config (विचारों के फ़ोल्डर में एक) आपके प्रोजेक्ट में उपयोग किए जा रहे MVC असेंबली के समान है।

[विचार फ़ोल्डर] /web.config:

<system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

MVC विधानसभा संदर्भ गुण:

MVC संस्करण


3
यह मेरे लिए काम किया। बहुत धन्यवाद।
vibs2006

1
यह मेरे लिए भी हल है, लेकिन सीधे नहीं। मुझे अपने बिन फ़ोल्डर से गलत संस्करण के साथ फाइल को डिलीट करना था, nuget के माध्यम से mvc को अपडेट करना था, और फिर इसने मेरे बिन फ़ोल्डर में सही संस्करण को रखा और यह काम कर गया। अगर आप अभी भी डब्बे के माध्यम से अपडेट करने के बाद बिन फ़ोल्डर में गलत संस्करण प्राप्त कर रहे हैं, तो बिन फ़ोल्डर में मौजूदा एक को हटा दें
जोशुआ के

धन्यवाद। मैंने Microsoft.AspNet.Mvc को NuGet के माध्यम से v5.2.7 में अपडेट किया और इस त्रुटि को .schtml फ़ाइल में देखना शुरू किया, जबकि ऐप अभी भी काम कर रहा था। यह <system.web.webPages.razor> के तहत दृश्य फ़ोल्डर में web.config निकला, यह अभी भी v.2.2.3 था। इसे v5.2.7 में संशोधित करने में मदद मिली।
vkelman 13

यह काम किया - धन्यवाद! [दृश्य] /web.config की जाँच करना याद रखना मेरे लिए महत्वपूर्ण था। संस्करण हर जगह मिलान किया लेकिन वहाँ!
जय डॉकिन्स

21
  • Cshtml फ़ाइल बंद करें
  • समाधान का पुनर्निर्माण करें
  • Cshtml फ़ाइल खोलें
  • फिर भी त्रुटियाँ हैं? विज़ुअल स्टूडियो को पुनरारंभ करें
  • फिर भी त्रुटियाँ हैं? Ctm1988 के उत्तर का उपयोग करें

मैंने कोशिश की है कि सब कुछ यहाँ उल्लेख किया गया था ... लेकिन अभी भी काम नहीं कर रहा है .. जबकि विजुअल स्टूडियो को पूरी तरह से काम करता है .. मुझे लगता है कि लापता निर्भरता का कारण है ..
मंसूर

यदि आपके पास एक परियोजना है जो काम कर रही थी और ठीक है और अचानक आपको यह मुद्दा मिल गया तो यह शायद ठीक है!
साइमन_वेवर

मुझे विश्वास नहीं होता कि यह कितनी बार काम करता है
nmit026

16

मैंने इनमें से अधिकांश की कोशिश की है, आखिरकार मेरे लिए जो काम किया गया था वह परियोजना को लोड करना था, csproj फ़ाइल को संपादित करें, और निम्नलिखित जोड़ें:

<Reference Include="System.Core" />

https://stackoverflow.com/a/38371981/2335660


2
यह काम करता हैं! ऐसा लगता है कि दृश्य स्टूडियो सोचता है कि System.Core पहले ही जोड़ा जा चुका है लेकिन वास्तव में ऐसा नहीं है। तो आपको इसे मैन्युअल रूप से करने की आवश्यकता है
isxaker

10

[ProjectName] .csproj.user प्रोजेक्ट निर्देशिका से फ़ाइल हटाना मेरे लिए मदद की।


मेरे लिए काम किया बनाम 2017 एस्प एमवीसी 5
स्पेलिन

2
इसने काम किया, वीएस 2019 और एमवीसी 5। मैंने बिन / obj और .vs फोल्डरों को भी साफ किया।
११:२३ पर लेनिनेंस

7

मैं सिर्फ एक ही सटीक मुद्दा था और समाधान में से कोई भी समस्या तय की। मुझे इसे अपने web.configभीतर जोड़ना थाSystem.Web

<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />

configआसपास के कुछ को बदलने पर मैंने इसे हटा दिया था ।


कृपया किसी भी तकनीक या अधिक के साथ टैग जोड़ें। कोई टैग नहीं मिला
विक्रांत कश्यप

संकलन / लक्ष्य को जोड़नाफ्रेमवर्क विशेषता ने मेरे लिए काम किया।
टॉम बोवर्स

मैंने लक्ष्य फ्रेमवर्क के लिए दो अलग-अलग मूल्य जोड़े हैं, इससे मेरी समस्या हल हो गई।
गीथांग

इसने मेरे लिए समस्या को ठीक कर दिया, एक हाइब्रिड asp.net/webforms ऐप: मैंने अपने एप्लिकेशन के लक्ष्य ढांचे को 4.7 में अपग्रेड किया, इन दो वेब.कॉन्फ़िग सेटिंग्स को अभी भी 4.5 की ओर इशारा नहीं किया।
टॉम रेगन

इसी मुद्दे का हल 4.8
माम्डौह

4

मेरे मामले में यह संदेश केवल तभी दिखाया गया जब Resperper चालू किया गया था। मैंने Resharper cache को साफ़ कर दिया है, VS को पुनरारंभ किया, Resharper को बंद कर दिया और इसे फिर से चालू कर दिया। संदेश का प्रसार हो गया है।


1
मेरे मामले में, बस करीब और पुनरारंभ वी.एस. मेरे पास फेरबदल है, लेकिन इसके साथ कुछ भी करने की जरूरत नहीं है।
जयजय

3

मुझे लापता असेंबली के साथ एक ही समस्या है और यह हुआ कि VS2017 बिल्ड ने बिन फ़ोल्डर में इसे ठीक से कॉपी नहीं किया है। इन कदमों ने मेरी मदद की:

  • वेब प्रोजेक्ट के संदर्भ नोड पर नेविगेट करें
  • System.Core का संदर्भ खोजें
  • VS गुण विंडो खोलें
  • गुण विंडो में, प्रतिलिपि स्थानीय परिवर्तित करें: सही करने के लिए गलत

इस टिप्पणी से: CS0012: '#####' प्रकार ##### 'विधानसभा में परिभाषित किया गया है जिसे संदर्भित नहीं किया गया है।


हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं। - रिव्यू से
स्टीव गोमेज़

1
@SteveG। धन्यवाद, स्टीव! मैंने इसे संपादित किया है। पहले बहुत टिप्पणी नहीं की गई थी और कुछ SO शिष्टाचार की कमी थी ... :-)
Angel_D

1
इसने मेरी समस्या हल कर दी, मुझे यह उल्लेख करना होगा कि एक विज़ुअल स्टूडियो रिस्टार्ट की भी आवश्यकता थी, थैंक यू।
सईद मौसवी

3

Web.config में मुझे बदलने की आवश्यकता है:

  <system.web>
    <compilation debug="true" targetFramework="4.7">

सेवा

  <system.web>
    <httpRuntime targetFramework="4.7" />
    <compilation debug="true" targetFramework="4.7">

1
शुक्रिया, @juFo! इसने इसे मेरे लिए विजुअल स्टूडियो 2019 में MVC 5 के साथ तय किया। मेरा MVC प्रोजेक्ट का लक्ष्य ढांचा 4.7.2 था जबकि वेब.कॉन्फिग targetFrameworkमें <httpRuntime>और <compilation>टैग्स के लिए अभी भी 4.7.1 था । बस प्रोजेक्ट के .NET फ्रेमवर्क संस्करण को सही ढंग से प्रतिबिंबित करने के लिए विशेषता को अपडेट करना मेरे लिए इसे तय किया।
आईकोड

2

जांचें कि cshtml फ़ाइल बिल्ड एक्शन 'सामग्री' पर सेट है।

मैं ReSharper का उपयोग करता हूं और ध्यान दिया है कि किसी कारण से टेम्पलेट को लागू करते समय फ़ाइल जो कि 'कोई नहीं' के लिए डिफ़ॉल्ट है।


2

Web.config (रूट में) में निम्नलिखित जोड़ें। मैंने पहले के सभी सुझावों की पूरी तरह से कोशिश की और कुछ भी काम नहीं किया जब तक कि मुझे नीचे नहीं मिला। उम्मीद है कि यह किसी और के लिए समय बचाएगा।

मैं targetFramework = "4.6.1" का उपयोग करता हूं, लेकिन इसे उस संस्करण में बदल दें जिसका उपयोग आप अलग करते हैं।

<system.web>
   <compilation debug="true" targetFramework="4.6.1" />
   <httpRuntime targetFramework="4.6.1" />
</system.web>

2

बिन फ़ोल्डर में System.Core.dll फ़ाइल को मैन्युअल रूप से जोड़ें। VS को पुनरारंभ करें और प्रोजेक्ट बनाएँ । मेरे लिए हल किया

@Html सहायकों और मेरे केंडो ग्रिड पर सभी विचारों में डिज़ाइन त्रुटियां थीं।

Web.config में System.Core असेंबली को जोड़ना और न ही MVC संस्करण को अपग्रेड करना। और System.Core को मैन्युअल रूप से जोड़ने का प्रयास करते समय त्रुटि:

'System.Core' का संदर्भ नहीं जोड़ा जा सका। यह घटक बिल्ड सिस्टम द्वारा पहले से ही संदर्भित है।

सुनिश्चित करें कि प्रोजेक्ट प्रॉपर्टी में टारगेटफ्रॉमवर्क वेब web.config में एक से मेल खाता है।

बिन फ़ोल्डर का स्क्रीनशॉट


1

मेरे लिए, प्रोजेक्ट मेनू के अंतर्गत "C # 6.0 / VB 14 सक्षम करें" विकल्प था। इस विकल्प का चयन कर चाल चली। पहले मैंने web.config को संशोधित करने की कोशिश की, विज़ुअल स्टूडियो को फिर से शुरू करना, आदि जैसा कि इस पोस्ट में सुझाया गया था।


1

मैंने उसी समस्या का सामना किया। मूल रूप से समस्या विभिन्न संस्करण का उपयोग कर रही है System.Web.Mvc। तो सबसे अच्छी बात आपको खुली चाहिए Tools > Nuget Package Manager > Manage Nuget Packages for Solution। आप शायद टैब System.Web.Mvcपर देख सकते हैं Cosolidate। अपग्रेड या डाउनग्रेड सबसे अच्छा विकल्प होगा। यदि आप नवीनतम .Net फ्रेमवर्क का उपयोग करते हैं, जो वर्तमान में है .Net 4.6.1, तो आपको सभी System.Web.Mvcसंस्करणों को अपग्रेड करना चाहिए 5.2.4.0। सौभाग्य!


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

1

ठीक है, मैंने इसे विधानसभा संदर्भ को /Views/web.config में सुधार कर ठीक किया है , चित्र देखें:

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


1

बिन, .vs और obj निर्देशिका हटाएं। दृश्य स्टूडियो पर अपनी परियोजना का निर्माण करने के बाद।


मैं अपनी परियोजना के संस्करणों के बीच बहुत कुछ स्विच कर रहा हूं, कुछ जो विभिन्न फ्रेमवर्क को लक्षित करते हैं। इसने मेरे "System.Core" संदर्भ त्रुटि का ख्याल रखा। सरल अनुस्मारक के लिए धन्यवाद कि चेकआउट के बीच वीएस वातावरण को साफ करने के लिए कभी-कभी आवश्यक होता है।
Suncat2000

0

मेरे विचार से ऐसा हुआ - बाकी सभी ठीक थे। मैंने निम्नलिखित कार्य किया:

  • एक नया दृश्य बनाएँ
  • पुराने दृश्य से नई सामग्री को कॉपी और पेस्ट करें
  • पुराने को हटा दिया
  • पुराने को नया नाम दिया

0

रिस्टार्टिंग विज़ुअल स्टूडियो ने मेरे लिए काम किया।


यह मुझे कुछ प्रतीत होता है निर्दोष NuGet अद्यतन के बाद हुआ। यह सिर्फ jQuery और बूटस्ट्रैप जैसे पुस्तकालय थे। अद्यतनों के बाद मुझे यह त्रुटि संदेश मिला और Visual Studio को पुनरारंभ करके इसे ठीक किया गया।
स्टीव हेनर

0
  • फ़ाइल बंद करें
  • घोल को साफ करें
  • समाधान का निर्माण करें
  • फ़ाइल को फिर से खोलें

0

जोड़ने की कोशिश करें

using system.Linq.Expressions;


4
हालांकि यह कोड स्निपेट प्रश्न को हल कर सकता है, जिसमें स्पष्टीकरण सहित वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और वे लोग आपके कोड सुझाव के कारणों को नहीं जान सकते हैं।
फार्की

0

मुझे यह समस्या भी हुई। Web.config फ़ाइल में बदलने targetFramework="4.5.2"से targetFramwork="4.5"इसे हल किया गया।


0

यदि आपको यह केवल एक या दो CSHTML फ़ाइलों में मिलता है ... यह एक भ्रष्ट फ़ाइल है।

मैंने ऐसा एक भ्रष्ट फ़ाइल के साथ किया है जिसमें कुछ छिपे हुए यूनिकोड वर्ण हैं। दस्तावेज़ के सभी पाठ को एक ताज़ा नोटपैड उदाहरण पर कॉपी करने का प्रयास करें। मूल फ़ाइल की सामग्री को साफ़ करें और सहेजें ... यदि फ़ाइल की लंबाई> 0 है, तो कुछ गड़बड़ है।

फ़ाइल को हटाएँ और पुराने संस्करण पर अपने नोटपैड उदाहरण को सहेजें। सभी त्रुटियां मेरे लिए दूर हो गईं।

मैंने अपने समाधान में कई बार ऐसा किया है। निश्चित नहीं है कि यह क्या कारण है, लेकिन मुझे संदेह है कि यह पुनर्परिभाषित है जब यह रसातल में स्मृति के विशाल भाग को निगलने तो यह फिर से खराब हो जाता है।

क्या मैं एकमात्र ऐसा व्यक्ति हूँ जिसका रिशेपर के साथ प्रेम / घृणा का रिश्ता है?


0

इसका कारण यह हो सकता है यदि आपके समाधान में कई परियोजनाएँ हैं जो सभी .NET फ्रेमवर्क के एक ही संस्करण को लक्षित नहीं करते हैं। उदाहरण के लिए, यदि आपकी वेब ऐप परियोजना .NET 4.5 को लक्षित करती है और आपके पास समाधान 4.5.2 को लक्षित करने वाले समाधान में किसी अन्य परियोजना के लिए एक विधानसभा संदर्भ है। इसे ठीक करने के लिए आपको अपनी परियोजनाओं को .NET फ्रेमवर्क के एक ही संस्करण को लक्षित करने की आवश्यकता है।


0

यदि कोई भी उत्तर काम नहीं करता है तो इसका उपयोग करें। मैंने उसी मुद्दे का सामना किया! वास्तव में माइग्रेशन फ़ोल्डर में configuration.cs फ़ाइल गायब / हटा दी गई थी। मैंने माइग्रेशन फ़ोल्डर हटा दिया है और डेटाबेस से माइग्रेशन टेबल भी हटा दिया है। पैकेज मैनेजर कंसोल में अगला (PM) निम्नलिखित कमांड का उपयोग करता है:

Enable-Migrations -Force
Add-Migration Initial
update-database

इस प्रक्रिया ने configuration.cs फ़ाइल को फिर से बनाया और सब कुछ पूरी तरह से काम किया!


0

लक्ष्य रूपरेखा प्राप्त करने के लिए अपनी परियोजना गुणों की जाँच करें। मैंने अपने लक्ष्य ढांचे .NET फ्रेमवर्क 4.6.1 MVC 5.2.3 के लिए उपयुक्त समाधान के लिए मिलान करके अपनी परियोजना में इस मुद्दे को हल किया। मुझे नुगेट का वह एमवीसी संस्करण मिला।


0

मेरे मामले में समाधान Web.Config के अंदर ConnectionString को स्थानांतरित करना था। यह कथन AppSettings अनुभाग के बाद होना चाहिए।


0

मैंने उपरोक्त सभी किया और अंत में पाया कि मेरे लिए यह क्या हल करता है (एमवीसी 5.2.4 के साथ एक .net फ्रेमवर्क 4.7.1 साइट पर) यह रूट web.config में जोड़ रहा था <compilation>-

<assemblies>
  <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
</assemblies>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.