बिल्ड त्रुटि: आपको System.Runtime के लिए एक संदर्भ जोड़ना होगा


209

मैं एक नया ASP.NET MVC 5.1 समाधान तैयार कर रहा हूं। मैं NuGet संकुल के एक समूह में जोड़ रहा हूँ और इसे Zurb Foundation आदि के साथ स्थापित कर रहा हूँ।

उस के भाग के रूप में, मैंने एक इन-हाउस NuGet पैकेज का संदर्भ जोड़ा है जो एक पोर्टेबल क्लास लाइब्रेरी है और मुझे लगता है कि यह बिल्ड सर्वर पर एक समस्या पैदा कर रहा है।

टीम के निर्माण के साथ विफल रहता है:

प्रकार 'System.Object' को एक असेंबली में परिभाषित किया गया है जिसे संदर्भित नहीं किया गया है। आपको असेंबली 'System.Runtime, संस्करण = 4.0.0.0' का संदर्भ जोड़ना होगा

मैंने मूल रूप से रेजर वेब पेजों को संकलित करते समय उसी या समान त्रुटि के लिए फिक्स को जोड़ा, जो कि ठीक किया जा रहा है web.config

<compilation ... >
  <assemblies>
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
  </assemblies>
</compilation>

हालाँकि मुद्दा अनसुलझा है।

जवाबों:


216

पहले फिक्स को लागू करने के लिए मौजूदा web.config संकलन अनुभाग का विस्तार करें जो डिफ़ॉल्ट रूप से इस तरह दिखता है:

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

एक बार जब मैं निर्देश दिया गया था, तब मैंने नया कॉन्फ़िगरेशन एक्सएमएल जोड़ा।

  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>

अंतिम web.config टैग इस तरह दिखना चाहिए:

<compilation debug="true" targetFramework="4.5">
  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>
</compilation>

2
यह मुद्दा MVC प्रोजेक्ट में 4.52 को लक्षित करता है, जिसे कोई भी ज्ञात PCL नहीं, बल्कि कई NGGet पैकेज हैं। मेरा मानना ​​है कि VS2013 को अनइंस्टॉल करने से यह ट्रिगर हो गया लेकिन मुझे यह पता नहीं है कि यह तथ्य है। X-PagedList को संदर्भित करने वाले दृश्यों में त्रुटि केवल सामने आई। प्रोजेक्ट web.config का संदर्भ जोड़ना (web.config के विचार नहीं) ने इसे ठीक कर दिया।
ग्रेग टेरेल

1
@GregTerrell X.PagedList के पुराने संस्करण से अपग्रेड करने के बाद मेरा यह सटीक मुद्दा था। कितना निराशाजनक। संदर्भ जोड़कर काम किया, फिर मैंने जो किया, उसका नाम बदल दिया गया (बदला हुआ) .vsफ़ोल्डर को परियोजना को बंद करने के बाद, इसे फिर से खोल दिया, web.configप्रविष्टि को हटा दिया और अब यह बनाता है और ठीक चलता है।
मर्डोक्स

@Mardoxx मैं एक ही मुद्दा रहा है। VS या X.PagedList के साथ समस्या है? यदि यह वीएस बग है, तो मैं web.config को पैच कर सकता हूं, लेकिन अगर मैं X.PagedList के साथ समस्या है तो .config फ़ाइलों को बदलना नहीं चाहता।
Jecoms

@Jecoms मैं आपके github मुद्दे का जवाब दिया :) github.com/kpi-ua/X.PagedList/issues/49#issuecomment-243515362
मर्डोक्स

3
MoreLINQ को मेरे .Net 4.5.1 प्रोजेक्ट में स्थापित करने के बाद यह त्रुटि हुई। इस उत्तर ने इसे हल कर दिया।
क्रिस मोसची 13

125

इस System.Runtime.dll असेंबली में एक संदर्भ जोड़कर समस्या को हल किया गया:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Facades\System.Runtime.dll

हालांकि उस स्पष्ट पथ में वह फ़ाइल बिल्ड सर्वर पर मौजूद नहीं है।

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

अपडेट करें

हाँ पूरे इंटरनेट पर मुखौटा असेंबलियों पर बहुत कुछ नहीं है।

गूगल:

(Facades OR Facade) Portable Library site:microsoft.com

2
यदि आपको निर्दिष्ट फ़ोल्डर में dll फाइलें नहीं मिल रही हैं, तो आप विंडोज एसडीके को बताए अनुसार स्थापित कर सकते हैं: stackoverflow.com/a/14517992/3918598
user3918598

धन्यवाद। उपरोक्त लिंक 4.5.1 एसडीके स्थापित करने के बाद काम किया।
मैट बेकमैन

40
अब Microsoft समर्थन पर एक KB आलेख है जो इसे संबोधित करता है।
पीटर मजीद

1
@PeterMajeed आपको उस उत्तर के रूप में टिप्पणी को वास्तव में पोस्ट करना चाहिए। टिप के लिए बहुत बहुत धन्यवाद!
जुलैलेगन

3
मुझे इसे काम करने के लिए 'कॉपी लोकल' को सही पर सेट करना था
8:01 बजे Phate01

28

एकमात्र तरीका जो मेरे लिए काम करता है। विधानसभा को web.config में जोड़ें

<compilation debug="true" targetFramework="4.5">
  <assemblies>     
    <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />   
  </assemblies>
</compilation>

1
धन्यवाद लोरेना! मेरे लिए काम किया
Annia Martinez

एक-लाइनर का काम करना, पुस्तकालय के लिए रास्ते पर निर्भर नहीं करता है और इसे कुछ भी स्थापित करने की आवश्यकता नहीं है, स्वीकार किया जाना चाहिए!)
इवान ज्वेरेव


27

@ पीटरमैजेड की स्वीकृत जवाब में टिप्पणी से मुझे संबंधित समस्या से निजात मिली। मैं पोर्टेबल लाइब्रेरी का उपयोग नहीं कर रहा हूं, लेकिन एक नए विंडोज सर्वर 2012 में एक ही बिल्ड एरर है, जहां मैं टीमसिटी चला रहा हूं।

स्थापित कर रहा है माइक्रोसॉफ्ट .NET फ्रेमवर्क 4.5.1 डेवलपर पैक मुद्दे का ध्यान रखा (अलग से स्थापित करने के बाद एमएस बिल्ड उपकरण )।


5
किसी भी विचार 4.6 के साथ क्या करना है? मैं चारों ओर एक डेवलपर पैक नहीं देखता।
georgiosd

4
मेरे पास 4.5.1 और 4.5.2 दोनों देव पैक हैं और अभी भी यह त्रुटि हो रही है। विचार? मैं अपनी सभी 25 परियोजनाओं में इसका संदर्भ नहीं देना चाहता। कुछ कारणों से अन्य 25 को इसकी आवश्यकता नहीं है।
abatishchev

अच्छे प्रश्न - मैंने अभी तक 4.5.2 या 4.6 के साथ सौदा नहीं किया है, कम से कम बिल्ड ऑटोमेशन के दृष्टिकोण से।
सूफूका

मुझे लगता है कि यदि आप वास्तव में फंस गए हैं, तो आप हमेशा मुक्त विज़ुअल स्टूडियो सामुदायिक सेवा संस्करण को पॉप कर सकते हैं और इसे अद्यतित रख सकते हैं।
ल्यूक पुप्लेट

मुझे समझ में नहीं आता कि इन डेवलपर पैक्स को क्यों स्थापित किया जाना है। मैंने VS2013 प्रो स्थापित किया। क्या यह पर्याप्त नहीं है? लेकिन इसने यहां समस्या हल कर दी। धन्यवाद।
माइक डी क्लार्क

10

मुझे वीएस 2015 (हालांकि एमवीसी नहीं) पर कुछ समाधानों में यह समस्या थी, और यहां तक ​​कि एक वर्कस्टेशन पर एक ही समाधान में, लेकिन दूसरे पर नहीं। .NET संस्करण को 4.6 में बदलने और पीसीएल को संदर्भित करने के बाद त्रुटियां दिखाई देने लगीं।

समाधान सरल है: समाधान बंद करें और छिपे हुए .vs फ़ोल्डर को समाधान के समान फ़ोल्डर में हटा दें

अन्य उत्तरों में सुझाए गए अनुपलब्ध संदर्भों को जोड़ने से भी समस्या हल हो जाती है, लेकिन आपके द्वारा फिर से संदर्भों को हटाने के बाद भी त्रुटि हल हो जाती है।

TeamCity के लिए, मैं नहीं कह सकता कि मेरे कॉन्फ़िगरेशन में कभी कोई समस्या नहीं थी। लेकिन सुनिश्चित करें कि आप अपने डिबगिंग प्रयास के एक भाग के रूप में कार्य सूची को रीसेट कर दें।


6

यह एक पुराना मुद्दा है, लेकिन हमारे निरंतर एकीकरण सर्वर पर एक निर्माण पाइपलाइन को ठीक करने के लिए मैंने आज इसका सामना किया। जोड़ा जा रहा है

<Reference Include="System.Runtime" />

मेरी .csprojफ़ाइल ने मेरे लिए समस्या हल कर दी।

संदर्भ का एक सा: रुचि परियोजना विकास मशीनों पर समस्या का निर्माण किए बिना एक पूर्ण .Net फ्रेमवर्क 4.6.1 परियोजना है। समस्या केवल बिल्ड सर्वर पर दिखाई देती है, जिसे हम नियंत्रित नहीं कर सकते हैं, एक अलग एसडीके संस्करण या कुछ समान के कारण हो सकता है।

लापता संदर्भ<Reference की कीमत पर प्रस्तावित हल को जोड़ना , त्रुटि को हल करनाविज़ुअल स्टूडियो में चेतावनी (संदर्भ ट्री में जोड़े गए प्रवेश पर पीला त्रिकोण) ।

मुझे उम्मीद है कि यह समान परिदृश्य में लोगों की मदद कर सकता है ...


मेरे लिए भी एक समान प्रसंग के भीतर हल किया गया
निकोला सेलिएंटो

3

आप जिस .NET संस्करण को लक्षित कर रहे हैं, उसके लिए .NET रनटाइम और साथ ही लक्ष्यीकरण पैक स्थापित करें।

डेवलपर पैक केवल इन दो चीजों को एक साथ बंडल किया गया है, लेकिन आज के रूप में 4.6 संस्करण प्रतीत नहीं होता है, इसलिए आपको दो वस्तुओं को अलग से स्थापित करना होगा।

डाउनलोड यहां देखे जा सकते हैं: http://blogs.msdn.com/b/dotnet/p/dotnet_sdks.aspx#


3

हमारे कोडबेस को मामूली अपडेट के बाद भी ASP .NET MVC प्रोजेक्ट को चलाने की कोशिश में मुझे इस समस्या का सामना करना पड़ रहा था, भले ही इसके बिना इसका अनुपालन हो:

संकलक त्रुटि संदेश: CS0012: प्रकार 'System.Object' को एक असेंबली में परिभाषित किया गया है जिसे संदर्भित नहीं किया गया है। आपको असेंबली 'System.Runtime, संस्करण = 4.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = b03f5f7f11d50a3a' का संदर्भ जोड़ना होगा।

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

CS1685 चेतावनी: पूर्वनिर्धारित प्रकार 'System.Runtime.CompilerServices.ExtensionAttribute' वैश्विक उपनाम में कई विधानसभाओं में परिभाषित किया गया है; 'c: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ mscorlib.dll' से परिभाषा का उपयोग करना

c: \ Users \ Admin \ Software Development \ source-control \ Binaries \ Publish \ WebApp \ Views \ Account \ Index.cshtml (35,20): त्रुटि CS0012: प्रकार 'System.Object' को असेंबली में परिभाषित किया गया है जो संदर्भित नहीं है। आपको असेंबली 'System.Runtime, Version = 4.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = b03f5f7f11d50a3a' का संदर्भ जोड़ना होगा।

c: \ Windows \ Microsoft.NET \ फ्रेमवर्क 64 \ v4.0.30319 \ अस्थाई ASP.NET फ़ाइलें \ meseems.webapp \ 68e2ea0f \ 8c5ee951 \ विधानसभा \ dl3 \ 52ad4dr \ 84698469_3bb3d401 \ System.Collections.Immutable.DLutable.DLutable स्थान। पिछली त्रुटि)

जाहिरा तौर पर हमारी परियोजना में जोड़ा गया एक नया पैकेज .NET फ्रेमवर्क के एक पुराने संस्करण को संदर्भित कर रहा था, जिससे "कई विधानसभाओं में परिभाषा" समस्या (CS1685) पैदा हुई, जिसके कारण रनटाइम में रेजर व्यू कंपाइलर त्रुटि हुई।

मैंने असंगत पैकेज (System.Collections.Immutable.dll) को हटा दिया और समस्या उत्पन्न होना बंद हो गई। हालाँकि, यदि पैकेज को आपके प्रोजेक्ट में हटाया नहीं जा सकता है, तो आपको बाहुबली के उत्तर की कोशिश करनी होगी ।


2

हमारे टीएफएस 2013 बिल्ड सर्वर पर मुझे एक ही त्रुटि थी, एक परीक्षण परियोजना में। .net 4.5.1 पर चल रही मुख्य वेब परियोजना के साथ।

मैंने सिस्टम रनटाइम का एक nuGet पैकेज स्थापित किया है और संकुल \ System.Runtime.4.3.0 \ ref \ net462 \ System.untime.dll से संदर्भ जोड़ा है

यह मेरे लिए हल है।


शायद यह काम नहीं करना चाहिए क्योंकि आप इसे .NET 4.5.1 प्रोजेक्ट के साथ .NET 4.6.2 DLL का उपयोग करने के लिए कह रहे हैं
क्रिस मैरिसिक

1
.. और फिर भी इसने काम किया, मेरे लिए भी। के बाद से कोई विकल्प नहीं ... \ 45 \ ... फ़ोल्डर में केवल एक स्टब फ़ाइल होती है जिसे कहा जाता है _._
nathanchere



1

मुझे एक वेब एपीआई परियोजना और कई पुस्तकालय परियोजनाओं के समाधान में यह समस्या थी। लाइब्रेरी प्रोजेक्ट्स में से एक बिल्ड पर काम कर रहा था, जिसमें त्रुटियों के बारे में कहा गया था कि एकता विशेषताएँ "वैध" विशेषताएँ नहीं थीं, और फिर एक त्रुटि ने कहा कि मुझे System.Runtime को संदर्भित करने की आवश्यकता है।

बहुत खोज के बाद, 4.5.2 डेवलपर पैक को फिर से स्थापित करना, और कुछ भी काम नहीं करना, मुझे लगा कि शायद यह केवल एक संस्करण बेमेल था। इसलिए मैंने हर परियोजना के गुणों को देखा, और बहुत ही आधार पुस्तकालयों में से एक 4.5 को लक्षित कर रहा था जबकि प्रत्येक अन्य को 4.5.2 लक्ष्य कर रहा था। मैंने उस एक को भी ४.५.२ को लक्षित करने के लिए बदल दिया और त्रुटियां दूर हो गईं।


1

मैं उत्पादन सर्वर के बिन फ़ोल्डर में "C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5.1 \ Facades \ system.runtime.dll" फ़ाइल की प्रतिलिपि बनाता हूं, इससे समस्या हल हो जाती है।


दूसरा तरीका यह है कि परियोजना में इस विधानसभा का संदर्भ जोड़ा जाए और कॉपी लोकल = ट्रू सेट किया जाए।
जॉन मैक

0

https://www.microsoft.com/en-us/download/details.aspx?id=49978 Microsoft .NET फ्रेमवर्क 4.6.1 डेवलपर पैक स्थापित करें और इस कोड को Web.config फ़ाइल में जोड़ें

<compilation debug="true" targetFramework="4.5">
          <assemblies>
            <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
          </assemblies>
        </compilation>

0

मेरे लिए केवल इस कोड लाइन में मदद की:

Assembly.Load("System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");


-1

नगेट पैकेज मैनेजर के संदर्भ को हटाने और इसे फिर से जोड़ने से मेरे लिए समस्या हल हो गई।

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