2009-08-27 12 views
6

मैं अपने घटकों/असेंबली को स्रोत कोड बिंदु दृश्य से स्पष्ट रूप से अलग रखना चाहता हूं लेकिन मुझे उसी परिस्थिति में पैकेज करने के लिए कुछ परिस्थितियों (संभवतः विस्तृत करने के लिए प्रासंगिक नहीं) की आवश्यकता है।क्या एक डीएल में एक से अधिक .NET असेंबली पैकेज करने का कोई तरीका है?

यह एक एकल dll में .NET विधानसभाओं के एक नंबर पैकेज करना संभव है? यदि हां, तो कैसे?

संभव हो तो, आपको लगता है यह एक अच्छा विचार है? क्यूं कर?

किसी भी मदद की सराहना की!

उत्तर

9

इस लेख चेक आउट: Merging .NET assemblies using ILMerge


आप जानते हैं, वस्तु कोड के पारंपरिक जोड़ने अब .NET में आवश्यक नहीं है। एक .NET प्रोग्राम आमतौर पर एकाधिक भागों से युक्त होगा। एक सामान्य .NET अनुप्रयोग में निष्पादन योग्य असेंबली, प्रोग्राम निर्देशिका में कुछ असेंबली और वैश्विक असेंबली कैश में कुछ असेंबली शामिल हैं। जब प्रोग्राम चलाया जाता है, तो रनटाइम इन सभी भागों को प्रोग्राम में जोड़ता है। संकलन समय पर लिंकिंग अधिक आवश्यक नहीं है।

लेकिन कभी कभी, फिर भी सभी भागों एक कार्यक्रम एक भी विधानसभा में निष्पादित करने के लिए की जरूरत है गठबंधन करने के लिए उपयोगी है। उदाहरण के लिए, आप कार्यक्रम, सभी आवश्यक पुस्तकालयों, और सभी संसाधनों के संयोजन, एक एकल exe फ़ाइल में करके अपने आवेदन की तैनाती को आसान बनाने में कर सकते हैं।

csc /target:library /out:ClassLibrary1.dll ClassLibrary1.cs 
vbc /target:library /out:ClassLibrary2.dll ClassLibrary2.vb 
vbc /target:winexe /out:Program.exe 
    /reference:ClassLibrary1.dll,ClassLibrary2.dll Program.vb 

ilmerge /target:winexe /out:SelfContainedProgram.exe 
     Program.exe ClassLibrary1.dll ClassLibrary2.dll 
+0

लेकिन यह एक EXE फ़ाइल उत्पन्न करता है, न कि एक डीएलएल (?) –

+1

एक ही चीज़ आउटपुट के रूप में एक डीएल के साथ करने योग्य होना चाहिए - मुझे लगता है ... – JohnIdol

6

ILMerge दो विधानसभाओं को एक में विलय कर सकता है।

जानकारी के लिए here देखें (उदाहरण क्रॉस भाषा के लिए हैं, लेकिन यह असेंबली बनाने वाले उपकरणों को भी काम करेगा)।

स्पष्ट रूप से व्यक्तिगत असेंबली (प्री-मर्ज) पर किसी भी निर्भरता को अद्यतन/पुनर्निर्देशित करने की आवश्यकता होगी।

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