मोनो में अपनी प्रोजेक्ट को तैनात करने के लिए, मैंने इसे .Net 4.0 में डाउनग्रेड कर दिया है जैसा कि मैंने लाइब्रेरी के साथ किया है जिसे मैं संदर्भित कर रहा हूं (CommonUtils)। हालांकि, मैं अभी भी निम्न अपवाद हो रही है: क्योंकि यह विधानसभा "Newtonsoft.Json, संस्करण = 4.5.0.0 पर एक अप्रत्यक्ष निर्भरता हैविजुअल स्टूडियो एक "गलत" संकलन समय अपवाद फेंक रहा है
प्राथमिक संदर्भ" CommonUtils "हल नहीं किया जा सकता है, संस्कृति = तटस्थ , PublicKeyToken = 30ad4fe6b2a6aeed "जिसे" .NETFramework, Version = v4.5 "फ्रेमवर्क के विरुद्ध बनाया गया था। यह वर्तमान में लक्षित ढांचे ".NETFramework, संस्करण = v4.0" की तुलना में एक उच्च संस्करण है।
क्या मैं समस्या को हल करने की कोशिश की है:
- मैं दोनों परियोजनाओं
- मैं गया है कई बार परियोजनाओं/समाधान साफ करने की कोशिश की सभी Nuget संकुल को फिर से स्थापित किया है, सभी बिन हटाना/obj फ़ोल्डर एक पुनर्निर्माण सब कुछ
- मैं क्रम में विधानसभा का नाम बदला है यकीन है कि कुछ भी नहीं होने के लिए कैश किया गया है इस बात का
कोई नहीं मदद की।
दोनों परियोजनाओं को .NET 4.0 के रूप में संकलित करने के लिए सेट किया गया है। संदर्भ संकलित असेंबली कॉमनयूट्स को "बाहरी पुस्तकालय" -फोल्डर में कॉपी करके है, क्योंकि यह डीएलएल अन्य परियोजनाओं में भी उपयोग किया जाता है। जो CommonUtils के साथ एक साथ bin
फ़ोल्डर में ले जाया जाता है - - Newtonsoft.Json.dll पर
राइट-क्लिक करें विवरण/फ़ाइल विवरण में से पता चलता है: Json.NET .NET 4.0
मैं बहुत यकीन है कि मैं सब कुछ के लिए सही है कि कर रहा हूँ। नेट 4.0 और विजुअल स्टूडियो मुझे लाइब्रेरी जोड़ने और ऑटो-पूर्णता के साथ मेरा समर्थन करने देता है, केवल संकलन उल्लिखित चेतावनी फेंकता है। चेतावनी का एक परिणाम के रूप में, अचानक मैं अपवाद प्रकार CommonUtils से संदर्भित से कोई भी मौजूद है
नाम स्थान नाम के प्रकार 'CommonUtils' नहीं पाया जा सका मिल (यदि आप एक का उपयोग कर के निर्देश या एक विधानसभा याद कर रहे हैं संदर्भ?)
मैं यह काम करने के लिए और क्या प्रयास कर सकता हूं?
पीएस: मुझे कुछ साल पहले इसी तरह की समस्या थी, जहां संकलन के लिए एक पुरानी असेंबली का उपयोग किया गया था, और इसे सचमुच खिड़कियों और दृश्य स्टूडियो को स्क्रैच से स्थापित करके हल किया गया था, लेकिन मुझे बस ऐसा करने में ऐसा नहीं लगता इस समय।
अद्यतन:
यह किसी अन्य कंप्यूटर पर काम करता है: मैं फ़ोल्डर संरचना में एक ही ऑपरेटिंग सिस्टम (विंडोज 8.1) और एक ही विजुअल स्टूडियो 2013 के साथ एक और कंप्यूटर के लिए यूएसबी स्टिक के माध्यम से लिया है - मैं के रूप में जहाँ तक बता सकते हैं, दोनों कंप्यूटरों में सभी अद्यतन स्थापित होना चाहिए - और वहां यह काम करता है।
यूएसबी स्टिक को सफलतापूर्वक संकलित परियोजना के साथ अपने पीसी पर वापस लेना - मुझे अभी भी वही त्रुटियां मिल रही हैं।
(मैं समझता हूँ, इसका मतलब है कि दोनों कंप्यूटर संभवतः एक ही स्थापित सब कुछ नहीं हो सकता है, लेकिन मैं कैसे अंतर, हो सकता है क्या इस तरह से गलत हो सकता है के साथ कुछ संकेत को खोजने के लिए पता नहीं है?)
अद्यतन 2:
प्रक्रिया एक्सप्लोरर बहुत ज्यादा मदद नहीं की, लेकिन जब मैं नैदानिक लॉग के साथ सब कुछ संकलित, मैं मैं कुंजी संकेत मिल गया लगता है:
...
5> Unified primary reference "Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed". (TaskId:158)
5> Using this version instead of original version "4.5.0.0" in "C:\<SolutionFolder>\packages\WebGrease.1.6.0\lib\WebGrease.dll" because of a binding redirect entry in the file "Web.config". (TaskId:158)
5> Using this version instead of original version "4.5.0.0" in "C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Web.Http.dll" because of a binding redirect entry in the file "Web.config". (TaskId:158)
5> Using this version instead of original version "4.5.0.0" in "C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.Formatting.dll" because of a binding redirect entry in the file "Web.config". (TaskId:158)
5> Resolved file path is "C:\<SolutionFolder>\packages\Newtonsoft.Json.6.0.3\lib\net40\Newtonsoft.Json.dll". (TaskId:158)
5> Reference found at search path location "{HintPathFromItem}". (TaskId:158)
5> Found related file "C:\<SolutionFolder>\packages\Newtonsoft.Json.6.0.3\lib\net40\Newtonsoft.Json.xml". (TaskId:158)
5> The ImageRuntimeVersion for this reference is "v4.0.30319". (TaskId:158)
...
हालांकि, मुझे उसी कंप्यूटर पर सटीक वही संदेश मिलता है जहां बिल्ड काम कर रहा है।
Skipping NuGet package Newtonsoft.Json 6.0.3 since it is already installed.
क्या installed
इस संदर्भ में क्या मतलब है:
साथ ही दोनों कंप्यूटरों शुरुआत में इस लाइन को दिखाने? Nu Nuet इसे डाउनलोड किया? या यह कहीं जीएसी में है, लेकिन मुझे यह नहीं मिला? (टिप्पणी देखें)
और मशीन, जहां संकलन काम करता है, मैं इसके साथ ही इस उत्पादन प्राप्त करें:
1> Dependency "Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed". (TaskId:17)
1> Resolved file path is "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Blend\Newtonsoft.Json.dll". (TaskId:17)
1> Reference found at search path location "{Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}". (TaskId:17)
1> For SearchPath "C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies". (TaskId:17)
1> Considered "C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\Newtonsoft.Json.winmd", but it didn't exist. (TaskId:17)
1> Considered "C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\Newtonsoft.Json.dll", but it didn't exist. (TaskId:17)
1> Considered "C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\Newtonsoft.Json.exe", but it didn't exist. (TaskId:17)
1> For SearchPath "{TargetFrameworkDirectory}". (TaskId:17)
1> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Newtonsoft.Json.winmd", but it didn't exist. (TaskId:17)
1> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Newtonsoft.Json.dll", but it didn't exist. (TaskId:17)
1> Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Newtonsoft.Json.exe", but it didn't exist. (TaskId:17)
1> For SearchPath "{Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}". (TaskId:17)
1> Considered AssemblyFoldersEx locations. (TaskId:17)
1> Required by "CommonUtils". (TaskId:17)
1> The ImageRuntimeVersion for this reference is "v4.0.30319". (TaskId:17)
लेकिन मैं इसे अपने कंप्यूटर, जहां संकलन में विफल रहता है
पर नहीं दिख रहा है अंतिम अद्यतन:
मैं छोड़ दिया और मेरा पूरा सिस्टम पुनर्स्थापित - यह अब काम करता है, लेकिन यह सवाल जहां गलत Newtonsoft.Json.dll से आया उत्तर नहीं मिलता है और क्यों यह में दिखाई नहीं था जीएसी, मैं एफ कर सकते हैं वास्तव में फिर से उस परियोजना पर काम करते हैं।
मैं वास्तव में काफी निराश हूं, यह मैवेन जितना आसान नहीं हो सकता है, जहां आप सभी पुस्तकालयों को फिर से लोड करने के लिए केवल एक फ़ोल्डर को हटा सकते हैं।
मेरे पास वीएचडी पर टूटी हुई प्रणाली की एक छवि है, इसलिए यदि कोई और एक महान समाधान के साथ आता है, तो मैं इसे वीएम में आज़मा सकता हूं।
स्ट्रिंग "4.5.0.0" के लिए अपने समाधान में सभी फाइलों खोज का प्रयास करें। –
इसके अलावा, 'CommonUtils' के लिए "विशिष्ट संस्करण का उपयोग करें" ध्वज देखें। हो सकता है कि यह "हां" पर सेट हो और आप जो चाहते हैं उससे उच्च संस्करण का उपयोग करने के लिए मजबूर हो। – CompuChip
आपको * अप्रत्यक्ष * निर्भरता पर ध्यान केंद्रित करने की आवश्यकता होगी। CommonUtils का एक अन्य असेंबली का संदर्भ है और * * * असेंबली Newtonsoft.Json.dll के नए संस्करण के साथ बनाया गया था। यह सीधे वीएस से दिखाई नहीं दे रहा है, आप प्रत्यक्ष निर्भरताओं पर ildasm.exe चलाकर इसे देख सकते हैं। –