2016-07-20 6 views
7

के साथ Json.NET के संदर्भ को प्रतिस्थापित करते समय प्रोजेक्ट को संकलित नहीं कर सकता है मेरे पास एक एएसपी.NET कोर 1.0 क्लास लाइब्रेरी है जिसे मैंने हाल ही में सफलतापूर्वक .NET कोर 1.0 RTM में अपग्रेड किया है। मैं एएसपी.NET कोर पाइपलाइन में शामिल करने के लिए कुछ कस्टम जेसन इनपुट और आउटपुट फॉर्मेटर्स को लागू करने के लिए इसका उपयोग करता हूं और इसलिए JsonSerializerSettings ऑब्जेक्ट जैसी चीजों के साथ काम करने के लिए न्यूटॉन्सॉफ्ट.जेसन 9.0.1 पैकेज का संदर्भ देता हूं। परियोजना त्रुटियों के बिना संकलित करता है।अपने स्रोत कोड

हालांकि, मेरे पास कुछ रनटाइम समस्याएं हैं जिन्हें मैं न्यूटॉन्सॉफ्ट स्रोत कोड के माध्यम से आगे बढ़कर आगे की जांच करना चाहता हूं। .NET कोर I में global.json फ़ाइल में चेक आउट आउट स्रोत का संदर्भ जोड़कर अपने स्रोत कोड के साथ एक Nuget पैकेज संदर्भ को बदलने की लचीलापन का आदी हो गया है (जैसा कि this ब्लॉग पोस्ट में अच्छी तरह से समझाया गया है)। यह github से Microsoft AspNetCore स्रोत फ़ाइलों जैसी चीज़ों के साथ बढ़िया काम करता है, और मैं इसे नियमित रूप से उपयोग करता हूं।

किसी कारण से, मैं न्यूटनसॉफ्ट स्रोत कोड के साथ इसे प्राप्त करने का प्रबंधन नहीं कर सकता। मैंने गिटूब से न्यूटॉन्सॉफ्ट स्रोत कोड क्लोन किया है और मेरे प्रोजेक्ट संदर्भों के सटीक 9.0.1 टैग की जांच की है। मैंने अपने समाधान में मेरी global.json फ़ाइल में स्रोत स्थान जोड़ा है। इसके बाद, विजुअल स्टूडियो 2015 ने न्यूटॉन्सॉफ्ट परियोजना को तुरंत पाया और इसे स्थानीय संदर्भ के रूप में सफलतापूर्वक हल किया। मैं अपने प्रोजेक्ट संदर्भों में भी देख सकता हूं कि न्यूटॉन्सॉफ्ट संदर्भ के लिए आइकन बदल गया है क्योंकि यह तब होता है जब यह nuget सर्वर से डीएल के बजाय एक ही समाधान से प्रोजेक्ट का उपयोग करता है। साथ ही, मुझे कोई चेतावनी या त्रुटियां दिखाई नहीं देती हैं जैसे कि कभी-कभी आप पाते हैं कि संदर्भ सही तरीके से हल नहीं होते हैं।

हालांकि, जब मैं इस परियोजना को संकलित करने का प्रयास करें, मैं अब निम्नलिखित संकलन त्रुटि मिलती है:

Error CS0012 The type 'JsonSerializer' is defined in an assembly that is not referenced. You must add a reference to assembly 'Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'.

त्रुटि के रूप में परियोजना के संदर्भ त्रुटियों के बिना ठीक हल हो गई मेरे लिए कोई मतलब नहीं है, और मैं को दूर करता है, तो स्रोत संदर्भ और इसे संकलित संस्करण को nuget से ले जाने दें, प्रोजेक्ट ठीक से संकलित करता है। यह मेरी परियोजना का प्रोजेक्ट.जेसन है:

{ 
    "version": "0.2.0", 
    "description": "...", 
    "authors": [ "..." ], 
    "buildOptions": { 
     "xmlDoc": true 
    }, 

    "frameworks": { 
     "net451": { }, 
     "netstandard1.6": {} 
    }, 
    "dependencies": { 
     "Microsoft.AspNetCore.Mvc": "1.0.0", 
     "Microsoft.AspNetCore.Mvc.Formatters.Json": "1.0.0", 
     "Microsoft.Extensions.Logging.Abstractions": "1.0.0", 
     "Newtonsoft.Json": "9.0.1" 
    } 
} 

कोई विचार?

+1

हालांकि पैकेज 9.0.1 के रूप में संस्करणीकृत है, project.json से यह कहता है '1.0.0- *' (https://github.com/JamesNK/Newtonsoft.Json/blob/9.0.1/Src/Newtonsoft.Json/project.json#L2)...not सुनिश्चित करें कि यदि confuses निर्माण ... अपनी परियोजना में संस्करण जानकारी निकालने का प्रयास करें। जेसन फ़ाइल और पुनः प्रयास करें .. –

+0

क्या आपने 'Newtonsoft.Json" का उपयोग करने का प्रयास किया है: {"target": "project"} '? – svick

+0

@KiranChalla हाँ, मैं वह भी देखा था और पहले से ही 9.0.1 के लिए json.net परियोजना में संस्करण बदल गया था, के लिए संदर्भ से हल किया जा करने के लिए इस आवश्यक था। लेकिन हल किए गए संदर्भ के साथ भी निर्माण त्रुटि बनी हुई है। – Chris

उत्तर

0

इसका कारण यह है कि "न्यूटॉन्सॉफ्ट.जेसन" मजबूत नाम है।

इसके लिए आपको <dependentAssembly> की आवश्यकता है। यह इस तरह से किया वर्ष .config मायनों में है: (<runtime> में)

<dependentAssembly> 
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" /> 
    <bindingRedirect oldVersion="0.0.0.0-9.0.1.0." newVersion="9.0.1.0" /> 
    </dependentAssembly> 
+0

धन्यवाद सुझाव के लिए, तो आप सही हो सकता है, लेकिन मैं समझ नहीं कैसे ASP.NET कोर में इस कॉन्फ़िगर करने के लिए। और ऐसा लगता है कि मैं केवल एक नहीं हूँ: http://stackoverflow.com/questions/39466304/asp-core-wrong-assembly-redirect-on-publish – Chris

संबंधित मुद्दे