2017-10-20 23 views
11

से नेट स्टैंडर्ड का संदर्भ देने में त्रुटि मेरे पास एक वेब ऐप प्रारंभ में 4.6.1 को लक्षित करता है। यह वेब ऐप कक्षा पुस्तकालय का संदर्भ देता है; बदले में, यह एक नेट मानक 1.6 कक्षा पुस्तकालय का संदर्भ देता है।नेट 4.6.1/4.7

नेट स्टैंडर्ड लाइब्रेरी का संदर्भ जोड़ना नवीनतम परिवर्तन था, और ऐसा लगता है कि इसे तोड़ने का कारण बन गया है: वेब ऐप नेट मानक लाइब्रेरी पेश होने तक ठीक काम कर रहा था;

Could not load file or assembly 'System.Runtime, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.

System.Runtime एप्लिकेशन में कोई NuGet पैकेज के रूप में शामिल किया गया है: इस बिंदु पर, मैं त्रुटि हो रही शुरू कर दिया।

यह प्रासंगिक नहीं हो सकता है, लेकिन जब मैं संकुल निर्देशिका में देखता हूं; मैं सिस्टम देखता हूं। रनटाइम.4.3.0 \ lib में net45 और net462 निर्देशिकाएं हैं, लेकिन 4.6.1 या 4.7 नहीं (नीचे देखें कि मैं इसकी अपेक्षा क्यों करूंगा)।

कुछ चीजें हैं जो मैं कोशिश की है कि काम नहीं किया:

  • here कि 4.6.1 समर्थन नेट कक्षा 1.6 देखकर बावजूद, मैं 4.7 करने के लिए उन्नयन की कोशिश किया था, लेकिन कोई लाभ नहीं हुआ।
  • web.config में एक असेंबली रीडायरेक्ट सेट करने का प्रयास किया। यह त्रुटि को थोड़ा कहने के लिए बदलता है कि यह 4.0.0.0 की तलाश में है और फिर री-डायरेक्ट किक्स में है, लेकिन यह अनिवार्य रूप से एक ही त्रुटि है।
  • पैकेज निर्देशिका को हटाने का प्रयास किया, यह देखने के लिए कि क्या मैं ताज़ा करने के लिए मजबूर कर सकता हूं (सिस्टम पर रन-पैकेज का भी प्रयास किया।)।
  • वेब पर खोज करने पर, मुझे कुछ समान समस्याएं मिली हैं; गिटहब पर एक (जिसे मैं स्थानांतरित नहीं कर सकता) ने बताया कि वीएस2017 के लिए एक अद्यतन समस्या को ठीक करेगा।

वेब पर पर्याप्त हालिया सामग्री है जो मुझे लगता है कि मैं इसका अनुभव करने वाला एकमात्र व्यक्ति नहीं हूं; हालांकि मुझे कोई स्पष्टीकरण नहीं मिला है कि कारण क्या हो सकता है। क्या कोई इस बारे में स्पष्टीकरण प्रदान कर सकता है कि इसका क्या कारण हो सकता है, या कोई डायग्नोस्टिक कदम जो मैं उपयोग कर सकता हूं?

+0

दृश्य स्टूडियो का आप किस संस्करण का उपयोग कर रहे हैं? –

+0

विजुअल स्टूडियो 2017 (15.4.1) –

+0

शायद आप इसे पुन: पेश करने और इसे कहीं प्रकाशित करने के लिए न्यूनतम परियोजना बना सकते हैं? – Evk

उत्तर

2

.NET मानक दस्तावेज़ here और here में .NET Framework की बात आती है तो विवादित जानकारी होती है। मुझे संदेह है कि उत्तरार्द्ध सबसे वर्तमान है।

असल में, यह इंगित करता है कि .NET Framework .NET मानक 1.6 पर समर्थित नहीं है जब तक कि आपके पास .NET Core 2.0 SDK इंस्टॉल न हो।

वैकल्पिक रूप से, .NET मानक 1.5 और नीचे .NET कोर 1.0 एसडीके स्थापित के साथ समर्थित हैं।

+0

मैं नेट कोर 2.0 एसडीके के खिलाफ चल रहा/रहा हूं - इसलिए समस्या का कारण नहीं है। –

0

ऐसा नहीं है कि NuGet पर या अपनी परियोजना का लक्ष्य ढांचे नीचे सबसे हाल ही में ढांचा संस्करण स्थापित हो जाएगा उनका कहना है लायक है। इसका मतलब है कि जब यह 4.6.1 को लक्षित कर रहा था संदर्भित संस्करण नेट 45 या 4.5 होगा जो आपको नेट मानक 1.1 तक नीचे छोड़ देता है।

4.7 करने के लिए सिद्धांत के उन्नयन में तो मतलब यह होना चाहिए कि यह net462 संदर्भ देता है, लेकिन यह हो सकता है कि यह इतना बढ़त है कि नहीं सब कुछ ठीक से काम कर रहा है खून बह रहा है। क्या आपने 4.6.2 पर अपडेट करने का प्रयास किया था?

0

एक लंबे परिवर्तित करने की प्रक्रिया है, जो मैं here वर्णित बाद मैं अनुभव है: आप अपने मुख्य परियोजना में भी NuGet पैकेज NETStandard.Library स्थापित करने के लिए (अपने webapp .net 4.6.1 में) है। यह बहुत सारे पैकेज स्थापित करेगा।

मैं .NETStandard.Library संस्करण 1.6.1 का उपयोग करता हूं।

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

और नेटस्टैन्डर्ड परियोजना के अन्य सभी संदर्भों को भी मुख्य परियोजना में संदर्भित किया जाना चाहिए।

3

मुझे एक ही समस्या थी और मैंने इसे सिस्टम से हटाकर हल किया। परियोजना से रनटाइम संदर्भ और इसे Nuget (नेट स्टैंडर्ड संगत) के माध्यम से स्थापित करें। यह एकमात्र पैकेज नहीं था जिसमें समस्याएं थीं (अन्य उदाहरण, System.Net.Http)। साथ ही, यदि आपके समाधान में कई परियोजनाएं हैं, तो आपको उनमें से प्रत्येक पर नेट स्टैंडर्ड स्थापित करना चाहिए।