2009-08-17 18 views
8

आयोजित करने के सर्वोत्तम अभ्यास मुझे विजुअल स्टूडियो समाधान और प्रोजेक्ट संगठन के बारे में कुछ मदद चाहिए।विजुअल स्टूडियो समाधान

मेरे पास कई परियोजनाओं के साथ समाधान है। उन सभी को सी # में लिखा गया है और जीयूआई द्वारा उपयोग किए जाने वाले पुस्तकालयों के रूप में संकलित किए गए हैं। इनमें से कुछ पुस्तकालयों में दूसरों के साथ निर्भरता भी है। उदाहरण के लिए, TestExecutive को लॉगिंगफ्रेमवर्क की आवश्यकता होती है, संचार को लॉगिंगफ्रेमवर्क की भी आवश्यकता होती है।

आयोजन का सबसे अच्छा तरीका कौन सा है? मैं एक स्थान पर पुस्तकालयों की बाइनरी रखने के लिए असेंबली फ़ोल्डर पर सोच रहा हूं। कुछ ऐसा:

Solution 
    | 
    |-- TestExecutive 
    |-- LoggingFramework 
    |-- assemblies 

एक और समस्या भी है। परियोजनाओं में से एक देशी सी डीएल का उपयोग करता है। मुझे इस पुस्तकालय को कहां रखना है? लाइब्रेरी की असेंबली या अंतिम निष्पादन योग्य के साथ?

संपादित करें:

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

+1

आपके प्रोजेक्ट प्रकारों में से एक इंस्टॉलर प्रोजेक्ट है। बस इसे अपने समाधान में जोड़ें। पूरे वेब या एमएसडीएन पर बिखरे हुए बहुत से ट्यूटोरियल हैं। – Clyde

+0

इसके बारे में काम कर रहे पूर्ण स्रोत कोड नमूने के साथ कोई अंतिम समाधान? – Kiquenet

उत्तर

8

कुछ यहाँ बातें:

  1. एक परियोजना दूसरे पर निर्भर करता है, तो आप दृश्य स्टूडियो में है कि निर्भरता स्थापित कर सकते हैं। प्रोजेक्ट पर राइट क्लिक करें और प्रोजेक्ट निर्भरता का चयन करें ...

  2. अन्य .NET असेंबली जो आपके समाधान (तृतीय पक्ष टूल इत्यादि) का हिस्सा नहीं हैं, मैं वही करता हूं जो आपने यहां दिखाया - मेरे पास अलग है परियोजनाओं के समानांतर फ़ोल्डर। फिर मैंने "प्रतिलिपि स्थानीय" सेट के साथ प्रत्येक परियोजना में असेंबली संदर्भ सेट किया और यह ठीक काम करता है।

  3. देशी सी डीएलएस के लिए, यह थोड़ा अलग है। समाधान एक्सप्लोरर के संदर्भ खंड में उनके लिए कोई प्रत्यक्ष संदर्भ नहीं है। कंपाइलर आपके पी/इनवोक संदर्भ या उसके जैसा कुछ भी जांचने के लिए डीएल को देखने वाला नहीं है। आपको बस यह सुनिश्चित करने की ज़रूरत है कि डीएल आपके शीर्ष स्तर के वेब या विनफॉर्म प्रोजेक्ट पर तैनाती का हिस्सा है। यह एक सीएसएस फ़ाइल या छवि या कुछ की तरह एक सामग्री फ़ाइल है। बस परियोजना में एक फ़ाइल के रूप में जोड़ सकते हैं और सुनिश्चित करें कि "कार्रवाई बनाएँ" तैनाती

5

मैं अपने समाधान फ़ोल्डरों एक सा सेट अप के हिस्से के रूप तो दृश्य स्टूडियो सिर्फ फ़ाइल की प्रतिलिपि करने जानता है सामग्री के लिए सेट कर दिया जाता आप से अलग शीर्ष स्तर पर मैं निम्न फ़ोल्डर है:

\build 
\lib 
\src 

निर्माण फ़ोल्डर स्क्रिप्ट (NAnt, MSBuild, आदि) का निर्माण किया है। किसी भी तृतीय पक्ष असेंबली (या जो भी मैं समाधान में नहीं बना रहा हूं) एक उचित उप-फ़ोल्डर में, lib फ़ोल्डर में डाल दिया जाता है। उदाहरण के लिए, मेरे पास lib4net, nUnit, RhinoMocks फ़ोल्डरों को lib फ़ोल्डर में होगा, प्रत्येक में उस निर्भरता के लिए आवश्यक फ़ाइलों को शामिल किया जाएगा। Src फ़ोल्डर में समाधान और सभी प्रोजेक्ट फ़ाइलें हैं।

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

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

+0

EDIT के दायरे से बाहर नहीं ;-) जानकारी के लिए धन्यवाद। – yeyeyerman

+0

वृक्ष सर्जन "विकास वृक्ष" ब्लॉग श्रृंखला वास्तव में अच्छी है। –

+0

उन पदों को खोदने के लिए मुझे थोड़ी देर लग गई। आप उन्हें [यहां] ढूंढ सकते हैं (https://mikebroberts.com/articles/how-to-setup-a-net-development-tree/)। – Ryogi

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