2009-05-14 11 views
16

मैं एमएस दृश्य स्टूडियो 2005 में एक GUI आधारित अनुप्रयोग विकसित कर रहा हूँ, मैं सिर्फ करना चाहते हैं पता है कि यह एक ही परियोजना में दोनों VB.NET और सी # का उपयोग करना संभव है। या क्या मैं अपने वीबी.नेट परियोजना में सी # में लिखे गए मॉड्यूल को शामिल कर सकता हूं?उसी एप्लिकेशन में वीबी.नेट और सी # का उपयोग करें?

मेरे पास सी # में लिखा गया एक वर्ग है जिसे मैं अपने वीबी.नेट आधारित परियोजना में उपयोग करना चाहता हूं, इसलिए यदि मैं उस परियोजना से कार्यों को शामिल और कॉल कर सकता हूं तो मुझे कक्षा को फिर से VB.NET में लिखना नहीं होगा ।

तो मेरी मदद कृपया के रूप में मैं नेट प्रोग्रामिंग करने के लिए नया हूँ।

उत्तर

16

मैं इसे अपने आप कभी नहीं किया है, लेकिन मैं जानता हूँ कि तुम एक dll में सी # कोड संकलन और फिर लोड करने और अपने वीबी परियोजना में dll संदर्भित कर सकते हैं।

"Calling C# class in VB.net" से:

मुझे लगता है कि सी # कोड है कि आप उपयोग करना चाहते हैं एक DLL के रूप में संकलित किया जाना चाहिए। एक बार जो किया जाता है, उस प्रक्रिया को अपने VB.Net प्रोजेक्ट में उस प्रोजेक्ट में संदर्भ जोड़ें, आवश्यकता वाले नामस्थान को आयात करें, और फिर आप C# कोड का उपयोग कर सकते हैं।

इसके अलावा How To: Create and Use C# DLLs देखना (MSDN से, VS2005 के लिए)

+0

इस तरह के एक त्वरित उत्तर के लिए जेरेड बहुत धन्यवाद ... –

26

मैं सिर्फ पता है कि यह संभव ही परियोजना में दोनों वीबी और सी # का उपयोग करने के लिए है चाहता हूँ।

नहीं, उसी प्रोजेक्ट में नहीं। दूसरी ओर, आप उन्हें उसी समाधान में उपयोग कर सकते हैं।

या क्या मैं अपने वीबीनेट प्रोजेक्ट में सी # में लिखे गए मॉड्यूल को शामिल कर सकता हूं।

मैं प्रस्ताव करता हूं कि आप दो परियोजनाओं वाला एक समाधान तैयार करें: सी # में एक जो आपके पुस्तकालय को आपके वीबी प्रोजेक्ट से उपयोग करता है। यह सरल, बनाए रखने में आसान और विस्तार करने में आसान है।

+0

आपको इस तरह के त्वरित उत्तर के लिए बहुत अधिक धन्यवाद ... मुझे लगता है कि आपने जो कहा है वह जेरेड जैसा ही है लेकिन करना आसान है, इसलिए मैं जाऊंगा जेरेड के समाधान के साथ ... –

+0

डाउनवोट क्यों? –

9

तुम भी सुनिश्चित करें कि आप सी # कोड सीएलएस अनुरूप है चाहता हूँ। इसका मतलब यह है कि यह सार्वजनिक रूप से जो अन्य नेट भाषाओं (उदाहरण के अहस्ताक्षरित ints के लिए - जो वीबी में मौजूद नहीं है, या केवल मामले से कक्षाएं भिन्न - के बाद से वीबी केस-संवेदी नहीं है) नहीं समझोगे किसी भी कार्यक्षमता का खुलासा नहीं करेंगे। ऐसा करने के लिए आपको एक विशेषता जोड़ने की आवश्यकता है ताकि यदि आप किसी भी दिशानिर्देश को तोड़ चुके हैं तो संकलक त्रुटियों को उठाएगा। This article दिखाता है कि यह करने के लिए:

CLSCompliantAttribute विधानसभाओं, मॉड्यूल, प्रकार, और सदस्यों के लिए लागू किया जा सकता है।

सीएलएस के रूप में एक पूरे विधानसभा अंकन के लिए संगत निम्न सिंटैक्स

using System; 
[assembly:CLSCompliant(true)] 

प्रयोग किया जाता है एक विशेष विधि अंकन के लिए के रूप में सीएलएस संगत निम्न सिंटैक्स

[CLSCompliant(true)] 
public void MyMethod()` 
+1

+1 - गुड प्वाइंट –

+0

@ मार्टिन - वीबी 8 (2005) के रूप में, वीबी हस्ताक्षरित पूर्णांक का समर्थन करता है। –

+0

आह, मेरी गलती - मैं वीबी प्रोग्रामर नहीं हूं।वे अभी भी सीएलएस अनुपालन नहीं कर रहे हैं, हालांकि त्रुटि अभी भी ध्वजांकित की जाएगी, भले ही मुझे लगता है कि आप इस विशिष्ट मामले में इसे अनदेखा कर सकते हैं। –

0

प्रयोग किया जाता है आप तो केवल विजुअल बेसिक प्रोजेक्ट्स में मॉड्यूल का उपयोग करने की योजना बना रहे थे, तो आपको केवल कोड को विजुअल बेसिक में परिवर्तित करने पर विचार करना चाहिए। यदि आपको सी # और VB.NET प्रोग्राम दोनों में मॉड्यूल का उपयोग करने की आवश्यकता है, तो मैं

से ऊपर दिए गए समाधानों में से एक का उपयोग करूंगा, आप * Convert C# to VB.NET जैसे कुछ कोशिश कर सकते हैं। यह सी # को वीबीएनईटी कोड में परिवर्तित करता है। मैं इस पृष्ठ का विशेष रूप से उपयोग करता हूं जब मुझे सी # में लिखा गया नेट पर जो कुछ मिलता है उसे परिवर्तित करना होता है।

3

अलग परियोजनाओं में वीबीएनईटी और सी # कोड रखें। (मैं अपने ओपन सोर्स प्रोजेक्ट, http://msquant.sourceforge.net/ में वीबीएनईटी और सी # दोनों का उपयोग कर रहा हूं, और यह बहुत अच्छा काम करता है)।

आप DLLs बारे में चिंता करने के लिए, बस संदर्भ परियोजना (उपयोग टैब "परियोजना" "संदर्भ जोड़ें" संवाद बॉक्स में) की जरूरत नहीं है। जैसे यदि आपको सी # कोड/प्रोजेक्ट में किसी फ़ंक्शन का उपयोग करने की आवश्यकता है तो V # प्रोजेक्ट में VB.NET प्रोजेक्ट में एक संदर्भ जोड़ें।

2

तुम भी पता होना चाहिए कि अगर आप उनमें से एक अन्य के लिए एक संदर्भ होने के साथ ही समाधान में एक C# परियोजना के साथ एक VB.NET परियोजना है, परिवर्तन संदर्भित परियोजना में दूसरे के पुनर्निर्माण के बाद लागू बस उपलब्ध हो जाएगा उपाय। यह बाइनरी संदर्भ होने जैसा है, लेकिन उसी समाधान पर कोड बदलने की क्षमता के साथ।

व्यक्तिगत रूप से, मुझे यह पसंद नहीं है, लेकिन मैं हमेशा ऐसी परिस्थिति में हूं जहां मैं संदर्भ परियोजना में कोड संशोधित करता हूं और नहीं जानता कि मेरे परिवर्तन कोड में क्यों नहीं हैं जहां मैं इसका उपयोग करता हूं और मुझे लगता है यह बाहर, ओह, मुझे पुनर्निर्माण करना होगा।

अस्थायी सहायता के लिए, यह स्वीकार्य हो सकता है लेकिन हर दिन प्रोग्रामिंग के लिए नहीं।

3

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

अपने कोड में आप का उपयोग कर सकते हैं:

Imports namespace 

या

using namespace 

एक बार संदर्भ उचित परियोजना में जोड़ा गया है समाधान का निर्माण और तुम जाना अच्छा कर रहे हैं।

आप एक अलग समाधान में एक वीबी.नेट लाइब्रेरी भी बना सकते हैं, इसे संकलित कर सकते हैं और डीएलएल को सी # प्रोजेक्ट या इसके विपरीत आयात कर सकते हैं।

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