2016-11-16 6 views
8

जिस समाधान पर मैं काम कर रहा हूं वह 400+ परियोजनाएं शामिल है। मुद्दा पुनरुत्पादित नहीं है लेकिन बहुत परेशान है। (विंडोज 8.1, विजुअल स्टूडियो 2015 अपडेट 2 और 3)वीएस परियोजना निर्भरताओं को पहचान नहीं रहा

असल में, बिल्ड ऑर्डर की गणना करते समय कुछ परियोजना निर्भरताओं को ध्यान में नहीं रखा जाता है। प्रक्रिया एक त्रुटि के साथ बंद हो जाती है: निर्दिष्ट डीएल नहीं मिल सकता है। यह हर समय और फिर होता है, आमतौर पर एक अलग परियोजना 'गायब' के साथ। कई बार कुछ भी गलत नहीं है और यह सिर्फ काम करता है। कोई पैटर्न नहीं मिला।

यदि मैं हाथ से 'गायब' परियोजना का निर्माण करता हूं और फिर समाधान का निर्माण करता हूं, तो सब ठीक है, या कोई अन्य प्रोजेक्ट 'गायब' हो जाता है।

ऐसा लगता है, जैसे कि वीएस ने परियोजना निर्भरताओं का ट्रैक खो दिया था, हालांकि प्रत्येक संदर्भ वहां है, जैसा कि वीएस और सीस्पोज़ फाइलों में देखा गया है।

स्क्रीनशॉट देखें: समाधान निर्माण बंद हो गया है, क्योंकि एक डीएल गुम है। परियोजना जो डीएलएल का उत्पादन करती है उसे सही ढंग से संदर्भित किया जाता है (समाधान एक्सप्लोरर देखें), लेकिन परियोजना निर्भरता संवाद में दिखाई नहीं दे रहा है। मेरा अनुमान है कि उस लापता निर्भरता के कारण, निर्माण आदेश भ्रमित हो जाता है और - समांतर संकलन के कारण कुछ यादृच्छिकता के आधार पर - कुछ मामलों में निर्भर परियोजना बहुत देर हो चुकी है।

dependency not recognized properly

नोट: हाँ, मैं सिर्फ इतना है कि चेक बॉक्स की जांच कर सकता है, लेकिन जैसा कि मैंने कहा, इस मुद्दे को बेतरतीब ढंग से और यादृच्छिक परियोजनाओं के साथ होता है। और हां, मैं पहले से प्रभावित परियोजनाओं को मैन्युअल रूप से निर्माण करके समस्या के आसपास काम कर सकता हूं। मैं रूट समस्या का हल ढूंढ रहा हूं।

कोई भी संकेत और टिप्पणियां आपका स्वागत है।

+0

मुझे इन संदर्भों को जोड़ने के समय मुद्दों का सामना करना पड़ा है; इसे स्पष्ट रूप से सहेजने की जरूरत है। (मैं समान त्रुटियों से बचने के लिए 'फ़ाइल-> सभी को सहेजें' करता हूं)। वीएस को बंद करने और शुरू करने से मुझे हर समय और फिर भी मदद मिली है। –

+0

आपके विवरण के आधार पर, मैं 3 प्रोजेक्ट (1 मुख्य प्रोजेक्ट, 2 क्लास लाइब्रेरी प्रोजेक्ट) के साथ एक डेमो बना देता हूं। मुख्य प्रोजेक्ट 2 क्लास लाइब्रेरी प्रोजेक्ट से संदर्भ जोड़ता है, फिर मैं प्रोजेक्ट निर्भरता खोलता हूं, मैं क्लास लाइब्रेरी को अनचेक नहीं कर सका।यह एक खिड़कियां पॉप अप करेगा 'इस निर्भरता को प्रोजेक्ट सिस्टम द्वारा जोड़ा गया था और इसे हटाया नहीं जा सकता', क्या आप कृपया हमारी ओर से अपनी समस्या को पुन: उत्पन्न करने के तरीके के बारे में एक विधि प्रदान कर सकते हैं। –

+0

@ कोले: इसे पुन: उत्पन्न करने का कोई तरीका नहीं है। हर अब और फिर यह एक यादृच्छिक परियोजना के साथ होता है। और हाँ, चेकबॉक्स चेक और ग्रे होना चाहिए, लेकिन कभी-कभी यह नहीं होता है। यह लक्षण है और मैं मूल कारण या कुछ समाधान की तलाश में हूं। –

उत्तर

1

कभी-कभी मैंने देखा है कि एक आयात सहायक (जैसे रीशेपर) का उपयोग निर्भरता स्रोत के बजाय एक निर्भर परियोजना के आउटपुट से जोड़ने के लिए एक निर्भर परियोजना का कारण बन सकता है।

यह कहना है कि यदि आप एक प्रोजेक्ट बनाना चाहते हैं - चलिए इसे 'प्रोजेक्टए' कहते हैं - और इसे लाइब्रेरी 'माईलिब' से लिंक करें, फिर 'प्रोजेक्टबी' बनाएं और रीशेर्पर को 'MyLib' से लिंक करने के लिए निर्भरताओं को स्वत: हल करने दें 'आपको लगता है कि ReSharper वास्तव में। \ LibraryA \ Bin \ MyLib.dll फ़ाइल से \। पुस्तकालय \ MyLib \ MyLib.dll फ़ाइल के बजाय लिंक करेगा।

जब आप अपने समाधान का पुनर्निर्माण करते हैं तो निम्नलिखित हो सकता है: * प्रोजेक्टबी पहले/तेज बनाने के लिए होता है (क्योंकि, शायद, प्रोजेक्ट में कई बदलाव हैं लेकिन प्रोजेक्टबी में केवल कुछ कोड परिवर्तन हैं)। * ProjectB फिर ProjectA के \ bin फ़ोल्डर में स्थित MyLib.dll से लिंक करने का प्रयास करता है और इसे नहीं ढूंढ सकता है। * प्रोजेक्ट ए बिल्डिंग को पूरा करता है और इसकी निर्भरता की प्रतिलिपि बनाता है - MyLib.dll इसके \ bin फ़ोल्डर में। * प्रोजेक्टबी आपके द्वारा मैन्युअल रूप से पुनर्निर्मित नहीं किया गया है और अब \ ProjectA \ bin \ MyLib.dll का पता लगाने में कोई समस्या नहीं है।

तो, संक्षेप में, अपनी परियोजना में निर्भरताओं के सटीक स्रोत स्थान की जांच करें। मुझे लगता है कि 400+ परियोजनाओं के साथ कुछ शामिल हैं जो क्रॉसवार्ड बन गए हैं।
शुभकामनाएं!

+1

अगली बार जब आप इस व्यवहार को देखते हैं तो क्या आप परियोजना निर्भरता संवाद की जांच कर सकते हैं? ध्यान दें, अगर यह मुद्दा csproj फ़ाइल से 'क्रॉसवायर' किया गया था, तो यह एक स्थायी मुद्दा होगा और यह मामला नहीं है। वैसे भी टिप के लिए धन्यवाद, यह जांच करेगा कि आर # के साथ क्या करने के लिए कुछ भी है या नहीं। –

+0

अस्थायी व्यवहार संकलन-दौड़ या आईडीई द्वारा तय किया जा सकता है कि आपको परियोजना एक्स का पुनर्निर्माण करने की आवश्यकता है। (मेरे लिए, किसी कारण से VS2012 कभी-कभी किसी पुस्तकालय प्रोजेक्ट को पुनर्निर्माण करने के निर्णय के दौरान गुजरता है मुख्य परियोजना बदल दी)। – Monza

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