दिलचस्प पोस्ट
NSDate को NSString में कनवर्ट करें मैं SQLPLUS का उपयोग करते हुए CSV स्वरूपित फ़ाइल को कैसे स्पूल कर सकता हूं? आप 12 घंटे AM / PM प्रारूप में जावास्क्रिप्ट डेट टाइम कैसे प्रदर्शित करते हैं? MongoDB: एक सरणी में वस्तुओं की संख्या की गणना event.returnValue नापसंद है इसके बजाय मानक event.preventDefault () का उपयोग करें कैसे ढेर भ्रष्टाचार त्रुटियों को डीबग करने के लिए? NoInitialContextException त्रुटि मर्जर्सोर्ट की तुलना में क्वॉर्टसोर्ट बेहतर क्यों है? सरणी को अपवाद करने के लिए संकेतक में क्षय नहीं करना चाहिए? DataGridView में डेटटाइम कॉलम को कैसे प्रारूपित करें? Regex का उपयोग करने के बजाय स्ट्रिंग उत्पन्न करने के लिए उन्हें मैच आप सी में समानता के लिए स्ट्रैक्ट की तुलना कैसे करते हैं? SQL सर्वर मिलिएसेकंड खो क्यों है? एनएसएमयूटीबलएआरआरआर से निकालने का सबसे अच्छा तरीका क्या है? आप एक MySQL क्वेरी में स्ट्रिंग से एक संख्यात्मक मान कैसे निकाल सकते हैं?

विज़ुअल स्टूडियो में प्रोजेक्ट / समाधान के बीच कोड कैसे साझा करते हैं?

मेरे पास दो समाधान हैं जो कुछ सामान्य कोड हैं, इसलिए मैं इसे निकालने और उनके बीच साझा करना चाहता हूं। इसके अलावा, मैं स्वतंत्र रूप से उस पुस्तकालय को स्वतंत्र रूप से रिलीज करने में सक्षम होना चाहता हूं क्योंकि यह दूसरों के लिए उपयोगी हो सकता है

  • यह दृश्य स्टूडियो 2008 के साथ करने का सबसे अच्छा तरीका क्या है?
  • क्या एक परियोजना एक से अधिक समाधानों में मौजूद है?
  • क्या मुझे कोड के अलग टुकड़े के लिए एक अलग समाधान है?
  • क्या एक समाधान दूसरे पर निर्भर है?

वेब के समाधान से एकत्रित समाधान "विज़ुअल स्टूडियो में प्रोजेक्ट / समाधान के बीच कोड कैसे साझा करते हैं?"

एक परियोजना को कई समाधानों से संदर्भित किया जा सकता है

अपनी लाइब्रेरी या कोर कोड को एक प्रोजेक्ट में रखो, फिर संदर्भ दोनों प्रोजेक्ट में समाधान।

आप दो परियोजनाओं के बीच एक कोड फाइल "लिंक" कर सकते हैं अपने प्रोजेक्ट पर राइट क्लिक करें, Add -> Existing item , और फिर Add बटन के बगल में नीचे तीर पर क्लिक करें:

चित्रपट पकड़ना

मेरे अनुभव को जोड़ने में लाइब्रेरी बनाने से सरल है I एकल संस्करण के साथ एक निष्पादन योग्य में लिंक्ड कोड परिणाम।

File > Add > Existing Project... आपको अपने वर्तमान समाधान में परियोजनाओं को जोड़ने देगा। बस इसके बाद के पोस्ट्स में से कोई भी ऐसा नहीं बताता है। यह आपको कई समाधानों में एक ही प्रोजेक्ट को शामिल करने देता है।

आप एक से अधिक समाधान में एक परियोजना को शामिल कर सकते हैं मुझे नहीं लगता कि एक परियोजना में एक अवधारणा है जिसमें इसका समाधान इसका हिस्सा है। हालांकि, एक और विकल्प है कि पहले हल का निर्माण कुछ प्रसिद्ध जगह पर किया जाए, और संकलित बाइनरी का संदर्भ दें। यदि आप रिलायंस या डिबग कॉन्फ़िगरेशन में निर्माण कर रहे हैं, इस आधार पर आपको अलग-अलग संस्करणों को संदर्भित करना है, तो इसका असर आपको थोड़ा काम करने की आवश्यकता होगी।

मुझे विश्वास नहीं है कि आप वास्तव में एक समाधान दूसरे पर निर्भर कर सकते हैं, लेकिन आप कस्टम स्क्रिप्ट के माध्यम से एक उचित क्रम में अपने स्वचालित निर्माण कर सकते हैं। मूल रूप से आपके सामान्य लाइब्रेरी का प्रयोग करें जैसे कि यह एनयूआईआईटी आदि जैसी अन्य तीसरी पार्टी निर्भरता थी।

आप निम्न तकनीक का उपयोग कर जंगली कार्ड इनलाइन कर सकते हैं (जो कि जिस तरह से @ एंडोमर का समाधान .csproj में सहेजा जाता है)

 <Compile Include="..\MySisterProject\**\*.cs"> <Link>_Inlined\MySisterProject\%(RecursiveDir)%(Filename)%(Extension)</Link> </Compile> 

इसमें डालें:

  <Visible>false</Visible> 

अगर आप फाइलों को छिपाना चाहते हैं और / या वाइल्ड-कार्ड को रोकना चाहते हैं तो आप विस्तारित होने में शामिल हैं यदि आप 'आभासी मौजूदा आइटम' फ़ोल्डर से कोई आइटम जोड़ते हैं या हटाते हैं जैसे MySisterProject ऊपर MySisterProject

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

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

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

आप एक से अधिक समाधान में एक ही प्रोजेक्ट शामिल कर सकते हैं, लेकिन आप सड़क के नीचे कुछ समय में समस्याओं को चलाने की गारंटी लेते हैं (उदाहरण के लिए जब आप निर्देशिकाओं को ले जाते हैं तो सापेक्ष पथ अमान्य हो सकते हैं)

इसके साथ संघर्ष करने के वर्षों के बाद, मैं अंत में एक व्यावहारिक समाधान के साथ आया था, लेकिन यह आपको स्रोत नियंत्रण के लिए सबवर्जन का उपयोग करने की आवश्यकता है (जो कि बुरी चीज नहीं है)

आपके समाधान के डायरेक्टरी स्तर पर, उन परियोजनाओं को इंगित करने के लिए एक svn: external property जोड़ें, जो आप अपने समाधान में शामिल करना चाहते हैं। सबवर्सन प्रोजेक्ट को रिपॉज़िटरी से खींच देगा और इसे आपके समाधान फ़ाइल के सबफ़ोल्डर में संग्रहीत करेगा। आपकी समाधान फाइल आपके प्रोजेक्ट को संदर्भित करने के लिए सापेक्ष पथ का उपयोग कर सकती है।

अगर मुझे कुछ और समय मिल जाए, तो मैं इसे विस्तार से बताऊंगा।

डीएलएल क्लास लाइब्रेरी बनाने के लिए यह एक अच्छा विचार है जिसमें सभी सामान्य कार्यक्षमताएं हैं प्रत्येक समाधान, अन्य समाधानों की परवाह किए बिना, इस डीएलएल का संकेत दे सकता है

असल में, यह हमारे स्रोतों का आयोजन कैसे किया जाता है (और मैं कई अन्य स्थानों पर विश्वास करता हूं)।

वैसे, समाधान स्पष्ट रूप से दूसरे समाधान पर निर्भर नहीं कर सकते हैं

यदि आप दो अलग-अलग प्रोजेक्ट प्रकार (Ie: डेस्कटॉप प्रोजेक्ट और मोबाइल प्रोजेक्ट) के बीच कोड साझा करने का प्रयास कर रहे हैं, तो आप साझा समाधान फ़ोल्डर में देख सकते हैं। मुझे यह करना है कि मेरे वर्तमान प्रोजेक्ट के लिए मोबाइल और डेस्कटॉप परियोजनाओं के लिए दोनों को समान कक्षाएं चाहिए जो केवल 1 फ़ाइल में हैं। यदि आप इस मार्ग पर जाते हैं, तो फाइल में जो भी परियोजनाएं हैं, उसमें से कोई भी इसमें परिवर्तन कर सकता है और उन सभी परियोजनाओं के विरुद्ध उन सभी परिवर्तनों को फिर से बनाया जाएगा।

परियोजनाओं के दौरान कोड का उपयोग करते समय "मौजूदा फ़ाइल लिंक जोड़ना" का उपयोग करने के लिए एक बहुत अच्छा मामला है, और तब जब आपको संदर्भ पुस्तकालयों के विभिन्न संस्करणों के संदर्भ और समर्थन की आवश्यकता होती है

अलग-अलग बाहरी विधानसभाओं के संदर्भों के साथ कई विधानसभाओं को बनाना आपके कोड को दोहराए बिना या स्रोत कोड नियंत्रण के साथ चाल का उपयोग करना आसान नहीं है।

मेरा मानना ​​है कि विकास और इकाई परीक्षण के लिए एक प्रोजेक्ट बनाए रखना आसान है, फिर मौजूदा फाइल लिंक का उपयोग करके 'बिल्ड' प्रोजेक्ट बनाने के लिए जब आपको उन बाहरी असेंबलियों के अलग-अलग संस्करणों का संदर्भ देने वाले विधानसभाएं बनाने की आवश्यकता होती है।

एक अन्य परियोजना में एक परियोजना की क्लास फाइल को शामिल करने का एक आसान तरीका मौजूदा समाधान में परियोजना को जोड़ना है और फिर मौजूदा प्रोजेक्ट में नई परियोजना के डीएलएल संदर्भ जोड़ना है। अंत में, आप किसी भी वर्ग के शीर्ष पर डायरेक्टिव का उपयोग करते हुए जोड़कर जोड़ा वर्ग के तरीकों का उपयोग कर सकते हैं।

शामिल दो मुख्य कदम हैं

1- एक सी + + डीएलएल बनाना

दृश्य स्टूडियो में

 New->Project->Class Library in c++ template. Name of project here is first_dll in visual studio 2010. Now declare your function as public in first_dll.h file and write the code in first_dll.cpp file as shown below. 

हैडर फ़ाइल कोड

 // first_dll.h using namespace System; namespace first_dll { public ref class Class1 { public: static double sum(int ,int ); // TODO: Add your methods for this class here. }; } 

सीपीपी फ़ाइल

 //first_dll.cpp #include "stdafx.h" #include "first_dll.h" namespace first_dll { double Class1:: sum(int x,int y) { return x+y; } } 

इसे देखो

 **Project-> Properties -> Configuration/General -> Configuration Type** 

यह विकल्प डायनेमिक लाइब्रेरी (.डीएल) होना चाहिए और समाधान / परियोजना का निर्माण अब करना चाहिए।

first_dll.dll फ़ाइल डीबग फ़ोल्डर में बनाई गई है

2- इसे सी # प्रोजेक्ट में जोड़ना

ओपन सी # प्रोजेक्ट

 Rightclick on project name in solution explorer -> Add -> References -> Browse to path where first_dll.dll is created and add the file. 

इस पंक्ति को सी # प्रोजेक्ट में शीर्ष पर जोड़ें

 Using first_dll; 

अब डीएलएल से कार्य फंक्शन के नीचे दिए गए कथन में उपयोग किए जा सकते हैं

 double var = Class1.sum(4,5); 

मैंने वीएल -2010 में सी + + प्रोजेक्ट में डीएलएल बनाया और इसे वी.एस.2013 सी # प्रोजेक्ट में इस्तेमाल किया। यह अच्छी तरह से काम करता है।

आप एक आंतरिक न्यूगेट सर्वर की मेजबानी कर सकते हैं और आम पुस्तकालयों को साझा कर सकते हैं जो आंतरिक और बाह्य रूप से अन्य परियोजनाओं में साझा किए जा सकते हैं।

आगे पढ़ें