मैं अपनी मल्टी-मॉड्यूल परियोजना को व्यवस्थित करने के दो तरीके सुझाने कर सकते हैं:
अधिक जानकारी के लिए निम्नलिखित पढ़ें।
विकल्प 1 - बनाएँ मॉड्यूल प्रति क्षेत्र, एक ही वेब परियोजना के भीतर
एक तरह से यह करने के लिए एक ही MVC परियोजना के भीतर अलग Area बनाने के लिए, है। इसलिए अलग-अलग नियंत्रकों, विचारों, स्क्रिप्ट इत्यादि के साथ प्रत्येक मॉड्यूल में एक अलग क्षेत्र होगा।लेकिन,
(1) यह अभी भी पूरे एमवीसी प्रोजेक्ट
(2) के लिए एक क्षेत्र dll
बना देगा (2) कुछ परिस्थितियों में फ़ाइलों को साझा करना बहुत आसान नहीं हो सकता है (आप सभी मॉड्यूल के लिए सभी स्क्रिप्ट्स को साझा कर सकते हैं निर्देशिका हालांकि)
विकल्प 2 - मॉड्यूल प्रति वर्ग पुस्तकालय बनाएँ, मर्ज निर्माण के बाद
एक और तरीका है मॉड्यूल प्रति एक भी class library
प्रोजेक्ट बनाने के लिए है। System.Web.Mvc
और अन्य पुस्तकालयों के संदर्भ में जोड़ें ताकि controllers
आदि हो। अपने स्वयं के विचार, स्क्रिप्ट और अन्य फ़ोल्डर्स बनाएं और फ़ाइलों की आवश्यकता के साथ पॉप्युलेट करें।
अब, अपने सभी मॉड्यूल dll
फ़ाइल के साथ के रूप में अलग परियोजनाओं, और javasvript
रों, html
रों, css
रों, छवियों आदि का निर्माण करेगा उन्हें एक ही web application
के रूप में सभी काम करने के लिए आप एक (केवल एक) बना सकते हैं MVC
वेब प्रोजेक्ट, जो आईआईएस आभासी निर्देशिका में जाएगा और वेब के रूप में प्रकाशित किया जाएगा।
उसी वेब से अपने सभी अलग-अलग मॉड्यूल का उपयोग करने के लिए, आप उन सभी पुस्तकालयों में post build ईवेंट लिख सकते हैं ताकि वे कलाकृतियों (डीएलएल, स्क्रिप्ट इत्यादि) को मुख्य वेब में कॉपी कर सकें, संबंधित फ़ोल्डरों में (डीएल से \ bin, जावास्क्रिप्ट \ स्क्रिप्ट आदि के लिए)। इसलिए, सफल निर्माण के बाद, सभी कलाकृतियों एक ही वेब प्रोजेक्ट में उपलब्ध हैं, और इसे सभी मॉड्यूल के साथ एक ही वेब के रूप में तैनात किया जा सकता है। आपकी पोस्ट का निर्माण स्क्रिप्ट इस
XCOPY "$(ProjectDir)$(OutDir)*.*" "$(ProjectDir)..\YourMainWebDirectory\Bin\" /Y
XCOPY "$(ProjectDir)Content" "$(ProjectDir)..\YourMainWebDirectory\Content\" /S /Y
XCOPY "$(ProjectDir)Scripts" "$(ProjectDir)..\YourMainWebDirectory\Scripts\" /S /Y
XCOPY "$(ProjectDir)Views" "$(ProjectDir)..\YourMainWebDirectory\Views\" /S /Y
XCOPY "$(ProjectDir)Images" "$(ProjectDir)..\YourMainWebDirectory\Images\" /S /Y
अब कुछ ऐसा दिखाई देगा,
(1) आप अलग मॉड्यूल के लिए अलग से DLLs है
(2) सीधे, स्क्रिप्ट और अन्य फ़ाइलों को साझा कर सकते हैं के रूप में वे एक ही स्थान में हो जाएगा (निर्माण के बाद)
(3) यदि आप वेब से एक विशिष्ट मॉड्यूल को हटाने का निर्णय लेते हैं, तो बस उस मॉड्यूल (प्रोजेक्ट) से पोस्ट बिल्ड इवेंट को किसी अन्य चीज़ को प्रभावित किए बिना हटा दें। आप इसे किसी भी समय कृपया वापस जोड़ सकते हैं।
आपका कुल solution
तरह
Module01.csproj => post build copy to main
\Controllers
\Scripts
\Views
\Contents
\Images
Module02.csproj => post build copy to main
\Controllers
\Scripts
\Views
\Contents
\Images
Models.csproj
\...
Application.csproj
\...
Main.Web.csproj => main web application hosted in IIS
\Controllers
\Scripts
\Views
\Contents
\Images
हां, आप जितनी चाहें उतनी असेंबली प्राप्त कर सकते हैं। – Matthew