2011-08-04 11 views
6

में संकलित करें मेरे पास एक मूल परियोजना है जो दो अलग-अलग परियोजनाओं को खिलाती है। मैं प्राथमिक परियोजना को सभी संदर्भों को संकलित समय पर एक डीएल में संकलित करने में सक्षम होना चाहता हूं।एक सी # प्रोजेक्ट को एक डीएल

यह परियोजना निर्माण में बनाया गया कुछ ऐसा होना चाहिए ताकि जूनियर डेवलपर्स को इसके बारे में चिंता न करें।


समाधान: मैं इस परियोजना के बाद के निर्माण कार्रवाई के लिए एक पंक्ति जोड़कर समाप्त हो गया है, ताकि एक अच्छा निर्माण करता है निम्नलिखित:

$(ProjectDir)ilmerge.exe /out: /ver: <.dll> <.dll> 

ilmerge.exe परियोजना और ऊपर ले जाया गया था रेखा दी गई डीएलएस लेती है और एक बनाता है।

+2

ठीक है, तो आपका प्रश्न क्या है? आपने ilmerge को टैग किया है, जो एक ऐसा टूल है जिसका उपयोग आप इसे करने के लिए कर सकते हैं। क्या आपके पास इसके बारे में कोई सवाल है? – FishBasketGordo

+0

http://stackoverflow.com/questions/1829531/how-do-i-merge-multiple-net-assemblies-into-a-single-assembly – Damith

+0

क्षमा करें, मुझे पता है कि NuGenUnify के साथ टूल का उपयोग कैसे करें, लेकिन मुझे चाहिए यह तब होता है जब मैं प्रोजेक्ट संकलित करता हूं। क्या मैं उस प्रक्रिया में जोड़ सकता हूं? – Arnej65

उत्तर

9

आपका सबसे अच्छा शर्त Micorosoft's ILMerge उपयोग करने के लिए है (इस जवाब नई डाउनलोड स्थानों के लिए लिंक अद्यतन करने के लिए और नए अंतर्दृष्टि प्रतिबिंबित करने के लिए संपादित किया गया था)। यह माइक्रोसॉफ्ट रिसर्च से अलग डाउनलोड के रूप में उपलब्ध होता था (यह वीएस या .NET एसडीके का हिस्सा नहीं है)।

original version 2012 तक बनाए रखा गया था। अब यह NuGet package है, जो इसे वर्तमान में प्राप्त करने का सबसे अच्छा तरीका है, और इसे अपने प्रोजेक्ट में जोड़ने और सर्वर बनाने के लिए सबसे अच्छा तरीका है।

वैकल्पिक रूप से, आप CodePlex से ILMerge GUI को आजमा सकते हैं, जो ILMerge को एक GUI इंटरफ़ेस प्रदान करता है। इसका विकास बाधित था, लेकिन अब फिर से सक्रिय है।

Codeproject article on ILMerge इसका उपयोग कैसे करें और कुछ उपयोग-मामले बताते हैं, इसके बारे में और बताते हैं। एक उदाहरण आदेश है:

ilmerge /target:winexe /out:AllInOne.exe NormalProgram.exe Lib1.dll Lib2.dll 

एक विकल्प के रूप में, आप FodyCostura.Fody साथ उपयोग कर सकते हैं, के रूप में यह SO response में विस्तार से बताया।


नोट (1): यदि आप साइड-बाई-साइड विधानसभाओं को आपस में (जैसे कि, देशी 64 बिट और 32 बिट विधानसभाओं मिश्रण), तो आपको this SO article on loading side-by-side assemblies dynamically परामर्श करना चाहिए।

नोट (2): इसे अपनी निर्माण प्रक्रिया के लिए एक अभिन्न चरण के रूप में जोड़ने के लिए, बस प्रोजेक्ट प्रॉपर्टीज> ईवेंट बनाएं> क्लिक करें "पोस्ट-बिल्ड संपादित करें" पर क्लिक करें और ऊपर से कमांड भरें। वर्तमान फ़ाइल या असेंबली को संदर्भित करने के तरीके को देखने के लिए "मैक्रोज़" पर क्लिक करें।

0

आप एक से अधिक विधानसभाओं मर्ज करने के लिए ILMerge उपयोग कर सकते हैं:

ILMerge एक भी नेट विधानसभा में कई .NET विधानसभाओं मर्ज करने के लिए एक उपयोगिता है। यह निष्पादन योग्य और डीएलएल पर समान रूप से काम करता है और आउटपुट के प्रसंस्करण और प्रारूप को नियंत्रित करने के लिए कई विकल्पों के साथ आता है। विवरण के लिए साथ में प्रलेखन देखें।

आप बेस असेंबली को एक साथ विलय कर सकते हैं और परिणामी असेंबली का उपयोग अपनी अन्य परियोजनाओं के संदर्भ के रूप में कर सकते हैं।

वैकल्पिक रूप से, दो परियोजनाओं के बजाय, एक साझा करने के लिए एक एकल असेंबली प्राप्त करने के लिए आपके साझा कोड को एक प्रोजेक्ट में रखा गया है।

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