2010-12-01 5 views
7

के साथ लक्ष्य मशीन (32 बिट या 64 बिट) की पहचान करना मेरे पास Windows Forms एप्लिकेशन है और क्लिकऑन परिनियोजन के माध्यम से उस एप्लिकेशन को तैनात कर रहा हूं। अब, मेरे पास एक थर्ड-पार्टी डीएलएल फ़ाइल है और इसमें 32-बिट और 64-बिट ओएस के लिए अलग-अलग संस्करण हैं।क्लिकऑन परिनियोजन

क्या क्लिकऑन के माध्यम से लक्ष्य मशीन (32-बिट या 64-बिट) के आधार पर विभिन्न डीएलएल फ़ाइलों को तैनात करना संभव है?

+0

क्या दो अलग-अलग डीएलएल संस्करणों का एक ही फ़ाइल नाम है? – codeConcussion

+0

@whatknott: हां, दोनों डीएलएस का नाम समान है, यहां तक ​​कि संस्करण संख्या भी। केवल अंतर आकार है। – JPReddy

उत्तर

3

[संपादित करें]

यह प्रतिबिंब का उपयोग करना आवश्यक नहीं है। आप लोडर में सीधे अपने प्रोग्राम में एक संदर्भ जोड़ सकते हैं और इसे लात मार सकते हैं। Tech and Me पर इसके बारे में कोड के साथ एक ब्लॉग पोस्ट किया था।


आप अपनी तैनाती में दोनों संस्करणों को शामिल कर सकते हैं, लेकिन उन्हें अलग-अलग नाम दें। फिर यदि आप 32 बिट या 64 बिट सिस्टम पर हैं तो लोडर ऐप जांच लें, सही डीएल (जैसे thirdparty64.dll -> thirdparty.dll) की प्रतिलिपि बनाएँ, जो आपका वास्तविक प्रोग्राम जुड़ा हुआ है, और उसके बाद लोडर से अपने प्रोग्राम को उदाहरण के लिए आमंत्रित करें Assembly.Load और अपनी मुख्य विधि शुरू करने के लिए प्रतिबिंब का उपयोग करें।

आपके आवेदन को x86 के रूप में चलाने के लिए संकलित करना एक आसान तरीका है, यह सुनिश्चित करना कि यह हमेशा 32 बिट मोड में चलाएगा। यदि आप 32/64 बिट संस्करणों में मशीन पर स्थापित कुछ विशिष्ट एप्लिकेशन पर भरोसा नहीं करते हैं तो यह सबसे अच्छा विकल्प हो सकता है।

+0

आपके उत्तर के लिए धन्यवाद। क्या यह Clickonce के साथ संभव है? क्या यह लोडर एप्लिकेशन चल रहा है जबकि क्लिकऑन एप्लिकेशन को तैनात करता है या इसे पहले मेरे एप्लिकेशन पर चलाया जाना चाहिए? क्लिकऑन परिनियोजन के दौरान मुझे यकीन नहीं है कि हम इस डीएलएल की प्रतिलिपि कैसे बनाते हैं, क्योंकि मुझे यकीन नहीं है कि यह हमें स्थापना स्थान देता है या नहीं। कृपया मुझे सुधारें अगर मैं गलत हूं। – JPReddy

+0

तैनाती पर नहीं, एप्लिकेशन को पहली बार चलाने के बाद आपको इसे करना होगा। मैं इसे खुद भी कोशिश करूंगा। –

+0

इस पर एक छोटी परीक्षा परियोजना और ब्लॉग पोस्ट किया था। इसे प्रतिबिंबित करने के लिए मेरा जवाब संपादित किया। –

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

  • कोई संबंधित समस्या नहीं^_^