उदाहरण एक भी dll में कई मॉड्यूल और लिंक विषय बनाने का तरीका:
csc /t:module RarelyUsedTypes.cs
csc /out:AllTypes.dll /t:library /addmodule:RarelyUsedTypes.netmodule AllTypes.cs
अधिक जानकारी के लिए रिक्टर की पुस्तक CLR via C# देखते हैं।
आप विजुअल स्टूडियो के लिए इस प्रक्रिया को स्वचालित कर सकते हैं।
आपकी प्रत्येक परियोजना के लिए नेटमॉड्यूल या असेंबली बनाएं और उन्हें एक ही असेंबली में संकलित करें।
पहला विकल्प। यह Jay R. Wren द्वारा प्रस्तावित किया गया:
यह एक प्यारा हैक है, लेकिन सीएससी और वीबीसी के साथ दोनों /target:module
और /addmodule
विकल्प का समर्थन करते हुए आप वास्तव में इस ILMerge बिना सिर्फ एक खोल स्क्रिप्ट का उपयोग करके कर सकता है या फ़ाइल बनाओ।
विजुअल स्टूडियो "netmodule" प्रकार का समर्थन नहीं करता है, लेकिन एमएसबिल्ड करता है।
अपने समाधान में वीबी परियोजना जोड़ें। प्रोजेक्ट को अनलोड करें और प्रोजेक्ट फ़ाइल को संपादित करें।
OutputType बदलें मॉड्यूल:
<OutputType>module</OutputType>
इसके बजाय वांछित परियोजना के लिए एक संदर्भ जोड़ने के लिए, हम एक मॉड्यूल जोड़ें। अफसोस की बात है, फिर से VStudio यहां विफल रहता है, लेकिन MSBUILD बस ठीक काम करता है। प्रोजेक्ट को अनलोड करें और प्रोजेक्ट फ़ाइल को संपादित करें। AddModules के साथ एक आइटम समूह जोड़ें निर्देश शामिल हैं।
<ItemGroup><AddModules Include="..\VbXml\bin\Debug\VbXml.netmodule" /></ItemGroup>
इस MSBuild बता सिर्फ संदर्भ आइटम समूह जो स्टूडियो का प्रबंधन करता है /addmodule
निर्देशों का उपयोग करने, सीएससी बताने के लिए होगा।
मेजर ड्राबैक: जोड़ा मॉड्यूल के लिए कोई विजुअल स्टूडियो इंटेलिजेंस नहीं। हमारे पास पहले से संदर्भ हैं, यह बहुत बुरा है कि हमारे पास मॉड्यूल नहीं हैं।
[अद्यतन: जैसा कि @ आर्क-कुन ने बताया, विजुअल स्टूडियो .netmodule
परियोजनाओं और इंटेलिजेंस का संदर्भ दे सकता है। आउटपुट प्रकार को बदलने से पहले बस परियोजना संदर्भ जोड़ें।]
शार्प डेवलपमेंट का पहला कदम है, लेकिन दूसरा चरण, "मॉड्यूल जोड़ें" gui एसडी 2.0 के बाद कम प्राथमिकता आइटम के रूप में खुला है।
दूसरा विकल्प। यह great article (स्कॉट हंसेलमैन द्वारा) वर्णन करता है कि यदि आप विजुअल स्टूडियो का उपयोग कर रहे हैं तो असेंबली को स्वचालित रूप से कैसे करें।यह आपको पहले वैकल्पिक के विपरीत IntelliSense समर्थन
देता है।
नेटमोड्यूल विपरीत हैं। मैं भी उनके द्वारा मूर्ख था। Netmodules आपको असेंबली को कई फाइलों में विभाजित करने की अनुमति देता है (उदाहरण के लिए उन्हें अलग से लोड करने की अनुमति देने के लिए)। वे सामान्य संदर्भित डीएलएस के समान हैं। चूंकि आपके लिंक में नेटमोड्यूल आपको "मल्टीफाइल असेंबली" बनाने की अनुमति देता है। –