23

क्या वीएस में समाधान करना संभव है (यानी शामिल) एक संपूर्ण समाधान? मैंने "सॉल्यूशन फ़ोल्डर्स" के बारे में कुछ सामान देखा है, लेकिन ये वही बात नहीं लगती ....? धन्यवाद! (बीटीडब्ल्यू, मैं वीएस 2008 का उपयोग कर रहा हूं)विजुअल स्टूडियो: एक समाधान कैसे दूसरे पर निर्भर करता है?

उत्तर

19

वास्तव में नहीं। आपको निम्न में से एक करना होगा:

  • एक निर्माण स्क्रिप्ट बनाएं जो सही क्रम में समाधान बनाता है।
  • प्री-बिल्ड समाधान ए, और केवल समाधान बी में निर्मित बाइनरी आउटपुट का संदर्भ देता है।
  • दोनों समाधानों से सभी परियोजनाओं वाला एक तीसरा समाधान बनाएं।

पहले दो आइटम सबसे आम हैं, जहां मैं व्यक्तिगत रूप से दूसरा पसंद करता हूं।

+2

* श्वास * ... ठीक है; धन्यवाद! –

+0

लेकिन net_prog –

+0

से उत्तर देखें यह ऐसा लगता है [वास्तव में] (https://stackoverflow.com/a/826009/712526) [संभव था] (https://msdn.microsoft.com/en-us/library /ee817674.aspx) 200 9 में। किसी भी दर पर, मुझे उम्मीद है कि यह 2015 में बेहतर हो गया है। – jpaugh

0

एक समाधान असेंबली का एक संग्रह है जो किसी प्रकार का निष्पादन योग्य या डीएल बनाने के लिए बनाता है। एक समाधान दूसरे पर निर्भर होने पर समझ में नहीं आता है। आउटपुट असेंबली (निष्पादन योग्य/डीएलएल) उन असेंबली पर निर्भर करता है जो इसका संदर्भ देते हैं। यदि आपका समाधान अन्य असेंबली पर निर्भर करता है, तो उन्हें संदर्भित करें। आप अपने समाधान (फाइल> जोड़ें> मौजूदा परियोजना) में परियोजनाएं जोड़ सकते हैं और फिर आप इन परियोजनाओं को अपने आउटपुट प्रोजेक्ट से जोड़ सकते हैं।

1

आप ऐसा नहीं कर सकते हैं। और तुम क्यों चाहोगे?

बस उन सभी परियोजनाओं को जोड़ें जिन्हें आप निर्भर करते हैं ('अन्य' समाधान में परियोजनाओं) समाधान के लिए।

फिर परियोजनाओं के बीच परियोजना संदर्भ (फ़ाइल संदर्भ नहीं) का उपयोग करें।

+3

मैं एक और समाधान पर निर्भर होना चाहता हूं जिसके लिए मेरा नियंत्रण नहीं है। यदि वह समाधान किसी अन्य प्रोजेक्ट को शामिल करने के लिए अपडेट हो जाता है, तो मैं चाहता हूं कि वह स्वचालित रूप से ध्यान में रखे। –

+1

उस स्थिति में, या तो: एक स्क्रिप्ट बनाएं जो स्वचालित रूप से आपकी समाधान फ़ाइल उत्पन्न करती है। या मैन्युअल रूप से अपने समाधान में परियोजनाएं जोड़ें, और एक स्क्रिप्ट बनाएं जो मान्य करती है कि सभी परियोजनाएं समाधान में हैं। समाधान फाइलें काफी सरल संरचना वाली साधारण टेक्स्ट फाइलें हैं। – codeape

+0

कोई यह चाहता है कि निर्भरता वृक्ष गहरा और जटिल था, हालांकि वीएस के बाहर एक तंत्र जो सुनिश्चित करता है कि निर्भर डीएलएस अद्यतित हैं और सही स्थान पर बहुत संकलन समय बचाएगा यदि उन डीएलएस केंद्रीय नियंत्रित भंडार में उपलब्ध हैं । –

4

यहाँ एक नज़र डालें: http://blogs.msdn.com/b/habibh/archive/2009/06/24/walkthrough-adding-an-existing-visual-studio-solution-to-another-solution.aspx

असल में विधि वर्णित वर्तमान समाधान, नहीं हम काफी क्या चाहते करने के लिए एक और समाधान से सभी परियोजनाओं कहते हैं, लेकिन कम से कम इस बार एक-एक करके मैन्युअल रूप से एक परियोजनाओं के सभी जोड़ने की बचत होती है ।

11

यह पोस्ट पुराना है, लेकिन इन दिनों आप उन सभी के लिए nuget पैकेज बनाकर अन्य समाधानों में निर्भरताओं का आसानी से उपयोग कर सकते हैं। वीएस 2015 में निर्मित न्यूज पैकेज बिल्डिंग है लेकिन वर्तमान में रिलीज उम्मीदवार है। विजुअल स्टूडियो 2013 में आप Nuget.Packaging nuget पैकेज का उपयोग अपने प्रोजेक्ट को Nuget पैकेज के रूप में बनाने की अनुमति देने के लिए कर सकते हैं।

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

फिर आपके अन्य समाधान की परियोजनाएं उस पैकेज पर निर्भर हो सकती हैं।

उदाहरण के लिए, कहें कि आपके पास "कोर फ्रेमवर्क" नामक समाधान में पुन: प्रयोज्य उपयोगिता डीएलएल है और आप उस वेबसाइट पर एक उपयोगिता का उपयोग करना चाहते हैं जिसे आप "XYZEcosystem" नामक समाधान में बना रहे हैं।

कोरफ्रेमवर्क समाधान में आप उपयोगिता परियोजना के लिए एक nuget पैकेज तैयार करेंगे जो उपयोगिता डीएल के लिए संकलित करता है और पैकेज में डीएलएल और इसकी पीडीबी फ़ाइल शामिल करता है।

फिर आप इसे अपने नेटवर्क शेयर में प्रकाशित करते हैं।

तो मान लीजिए कि आपके पैकेज में 1.0.0.0 के संस्करण के साथ "XYZ.Core.Utilities" जैसी आईडी है।

अब XYZEcosystem में आप पैकेज मैनेजर कंसोल का उपयोग करेंगे, रिपोजिटरी ड्रॉप को अपने भंडार में सेट करें और "इंस्टॉल-पैकेज XYZ.Core.Utilities" टाइप करें और यह XYZ.Core.Utilities का नवीनतम संस्करण स्थापित करेगा।

यदि आप XYZ.Core.Utilities में परिवर्तन करते हैं तो आप XYZEcosystem पर अद्यतन-पैकेज XYZ.Core.Utilities चला सकते हैं और यह नया संस्करण उठाएगा।