.net - visual - माइक्रोसॉफ्ट विज़ुअल सी++




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

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

इस पर आगे read

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

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

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

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


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

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

इसमें रखो:

    <Visible>false</Visible>

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


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

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

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


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


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


यदि आप दो अलग-अलग प्रोजेक्ट प्रकारों (आईई: डेस्कटॉप प्रोजेक्ट और मोबाइल प्रोजेक्ट) के बीच कोड साझा करने का प्रयास कर रहे हैं, तो आप साझा समाधान फ़ोल्डर देख सकते हैं । मुझे अपने वर्तमान प्रोजेक्ट के लिए ऐसा करना है क्योंकि मोबाइल और डेस्कटॉप प्रोजेक्ट दोनों को समान कक्षाओं की आवश्यकता होती है जो केवल 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** 

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

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 सी # प्रोजेक्ट में इस्तेमाल किया। यह अच्छी तरह से काम करता है।


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


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

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






code-sharing