हमारे पास एक समान समस्या है क्योंकि हमारे पास निपटने के लिए 109 अलग-अलग परियोजनाएं हैं। हमारे अनुभवों के आधार पर मूल सवालों के जवाब देने के लिए:
1. आप परियोजनाओं के बीच संदर्भों को सबसे अच्छी तरह से कैसे संभालते हैं
हम 'संदर्भ जोड़ें' संदर्भ मेनू विकल्प का उपयोग करते हैं। यदि 'प्रोजेक्ट' चुना जाता है, तो निर्भरता हमारे एकल, वैश्विक समाधान फ़ाइल में डिफ़ॉल्ट रूप से जुड़ जाती है।
2. क्या मुझे स्थानीय "कॉपी या ऑन" होना चाहिए?
हमारे अनुभव में बंद। अतिरिक्त प्रतिलिपि केवल बिल्ड समय में जोड़ता है।
3. क्या प्रत्येक परियोजना को अपने स्वयं के फ़ोल्डर में निर्माण करना चाहिए, या क्या उन्हें सभी एक ही आउटपुट फ़ोल्डर में बनाना चाहिए (वे सभी एक ही एप्लिकेशन का हिस्सा हैं)
हमारे सभी आउटपुट को 'बिन' नामक एक फ़ोल्डर में रखा जाता है। यह विचार किया जा रहा है कि यह फ़ोल्डर वैसा ही है, जब सॉफ्टवेयर तैनात किया जाता है। यह उन समस्याओं को रोकने में मदद करता है जब डेवलपर सेटअप परिनियोजन सेटअप से भिन्न होता है।
4. क्या समाधान फ़ोल्डर सामान को व्यवस्थित करने का एक अच्छा तरीका है?
हमारे अनुभव में नहीं। एक व्यक्ति की फ़ोल्डर संरचना दूसरे की दुःस्वप्न है। दीप नेस्टेड फ़ोल्डर्स बस कुछ भी खोजने के लिए समय बढ़ाते हैं। हमारे पास पूरी तरह से सपाट संरचना है, लेकिन हमारी परियोजना फाइलों, विधानसभाओं और नामस्थानों को एक ही नाम दें।
संरचित परियोजनाओं का हमारा तरीका एकल समाधान फ़ाइल पर निर्भर करता है। इसे बनाने में एक लंबा समय लगता है, भले ही परियोजनाएं खुद नहीं बदली हों। इसकी सहायता के लिए, हम आमतौर पर एक और 'करंट वर्किंग सेट' सॉल्यूशन फाइल बनाते हैं। हम जिन भी परियोजनाओं पर काम कर रहे हैं, वे इसमें जुड़ जाते हैं। बिल्ड समय में काफी सुधार होता है, हालांकि हमने जो एक समस्या देखी है वह यह है कि इन्टेलिजेंस उन परियोजनाओं में परिभाषित प्रकारों के लिए विफल रहता है जो वर्तमान सेट में नहीं हैं।
हमारे समाधान लेआउट का एक आंशिक उदाहरण:
\bin
OurStuff.SLN
OurStuff.App.Administrator
OurStuff.App.Common
OurStuff.App.Installer.Database
OurStuff.App.MediaPlayer
OurStuff.App.Operator
OurStuff.App.Service.Gateway
OurStuff.App.Service.CollectionStation
OurStuff.App.ServiceLocalLauncher
OurStuff.App.StackTester
OurStuff.Auditing
OurStuff.Data
OurStuff.Database
OurStuff.Database.Constants
OurStuff.Database.ObjectModel
OurStuff.Device
OurStuff.Device.Messaging
OurStuff.Diagnostics
...
[etc]