2012-02-20 13 views
10

मूल संघर्ष।रावेनडीबी और सिग्नलआर नुजेट पैकेज निर्भरता संघर्ष

सिग्नलआर न्यूटॉन्सॉफ्ट.जेसन संस्करण 4.0.7 या उच्चतर चाहता है जबकि रावेनडीबी 4.0.5 के बराबर संस्करण चाहता है। जो स्पष्ट रूप से मतलब है कि वे एक तरफ स्थापित नहीं किया जा सकता है।

तो उनमें से एक से स्रोत कोड डाउनलोड करने और स्थानीय स्तर पर निर्भरता प्राप्त करने से अलग होने के बाद उसे उसमें से बनाई गई बाइनरी में जांच करनी है, क्या निर्भरता NuGet के साथ प्रबंधित रखने का एक संभावित तरीका है, और शायद आगे डीएलएल कॉल (जैसे एमवीसी उदाहरण के लिए प्रत्येक नए संस्करण के साथ करता है)?

+0

भागो में JSON.NET के लिए अनुरोध करने के लिए एक pull request on SignalR किया था। Nuget संस्करण संख्या spec newtonsoft.json 4.0.8 के अनुसार 4.0.5 के साथ संगत होना चाहिए। या तो RavenDb या Newtonsoft.Json कुछ गलत कर रहा है। वास्तव में गुस्से वाला। – terjetyl

+1

ध्यान दें कि RavenDB अब 4.0.8 –

+0

का समर्थन करता है बहुत अच्छा .. कुछ दिनों तक प्रतीक्षा करें और आपकी सभी समस्याएं हल हो गई हैं :) – dasheddot

उत्तर

3

हम कुछ दिनों पहले एक ही मुद्दे में भाग रहे थे और यह एक बुरा है। हमने पाया कि आप NuGet के साथ प्रबंधित निर्भरताओं को नहीं रख सकते हैं। इसके बजाए, हमने 4.0.5 का उपयोग करने के लिए सिग्नलआर को बदल दिया है और इसे स्थानीय रूप से संकलित किया है।

+0

हाँ सिग्नलर निश्चित रूप से वह है जिसे मैं स्थानीय रूप से कर दूंगा। – Rangoric

+0

इसे स्थानीय रूप से संकलित करके, क्या आपका मतलब सिग्नलआर स्रोत कोड प्राप्त करना है, न्यूटॉन्सॉफ्ट.जेसन के संदर्भ को बदलना, संकलन करना, फिर संकल्प कोड को अपने समाधान में रखना? –

+0

हां, यही वह है जो मेरा मतलब था। हालांकि (!) RavenDB 2.0 में इससे निपटने की कोई आवश्यकता नहीं है क्योंकि न्यूटनसॉफ्ट.जेसन की निर्भरताओं को आंतरिक बनाया गया है ताकि अब कोई संघर्ष न हो! –

10

इस संघर्ष के आसपास काम करने के लिए और भी एक उचित तरीका है। के बाद से नेट हमें redirect assemblies, क्यों इसका इस्तेमाल नहीं करने के लिए possiblity देता है;)

आप बस अपनी App.config (यदि वहाँ पहले से ही) एक assemblyBinding रखा है देखभाल करने के लिए ऐसा ही कुछ जोड़ सकते हैं:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.0.8.0" newVersion="4.0.5.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

इस रीडायरेक्ट सेट के साथ आप बस RavenDB पैकेज और सिग्नलआर पैकेज (उनमें से प्रत्येक JSON.NET के किसी अन्य संस्करण का जिक्र कर सकते हैं) जोड़ सकते हैं और यह ठीक करता है।

साथ ही मैं समर्थन के रूप में अच्छी तरह से इस एक में संस्करण 4.0.5 भी (क्योंकि यह पिछड़े संगत होना चाहिए)

+3

बहुत बढ़िया। रीडायरेक्ट चीज़ नहीं पता था ... –

+1

रीडायरेक्ट काफी खतरनाक है। उदाहरण के लिए जब हमने Json.NET RavenDb के उपयोगकर्ता के नए संस्करण को फिर से बनाया, दस्तावेजों में ग्विड्स के साथ फ़ील्ड याद करना शुरू कर दिया। –

+1

मुझे इसे बाद में देखना होगा, लेकिन मैं दोनों पैकेज इंस्टॉल नहीं कर सकता। तो क्या आप कह रहे हैं कि NuGet रीडायरेक्ट को पहचानता है और तदनुसार पैकेज लोड करेगा? या क्या कोई निश्चित आदेश है कि मुझे ऐसा करने की आवश्यकता होगी? (अगर यह फिर से आता है। – Rangoric

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