2012-05-25 6 views
5

मुझे दो अलग-अलग कंपनियों (अलग लोगो, अलग-अलग नाम) के लिए एक ही प्रोग्राम बनाना है। जब मैं रिलीज करता हूं तो मैं इसे स्वचालित रूप से करना चाहता हूं।स्वचालित रूप से सी # प्रोग्राम के दो संस्करणों को संकलित करें

मैं संसाधन फ़ाइल या एक उपग्रह विधानसभा का उपयोग करने के बारे में सोच रहा हूँ, लेकिन मुझे यकीन है कि आगे बढ़ने के लिए कैसे नहीं हूँ।

आपको सबसे अच्छा लगता है कि कौन सा तरीका है?

धन्यवाद।

संपादित करें:

  • मतभेद केवल एक छवि और एक स्ट्रिंग है।
  • मैं पर एक क्लिक में उत्पन्न सबकुछ करना चाहता हूं।
  • हम भविष्य में में अधिक ग्राहक प्राप्त कर सकते हैं।
  • मुझे यह भी जोड़ना होगा कि मैं अपनी सभी निर्भरताओं को एक exe फ़ाइल में विलय करने के लिए SmartAssembly का उपयोग करता हूं। अलग विधानसभा में
+0

बिल्कुल आवश्यक चीज़ों पर निर्भर करता है, क्या यह सिर्फ पाठ (और बाहरी) ब्रांडिंग संसाधन है या ...? जैसे ही एक्स विशेषताएं वाई चाहता है या व्यवसाय तर्क जेड है ... –

+0

हाय, यह मिश्रित संसाधन, एक छवि और एक स्ट्रिंग है। आपके पास कोई विचार है? – John

+0

अधिक ग्राहकों के लिए संभावित मॉड्यूलरिटी चिल्लाती है। यह डीएलएस के लिए बनाया गया था। –

उत्तर

1

सबसे अच्छा मैं इसे बैच स्क्रिप्ट के बारे में सोच सकता हूं।

फ़ाइलें (छवियों (लोगो), पाठ (कंपनी का नाम), आदि) को संदर्भित करने के अपने प्रोजेक्ट प्राप्त करें। यानी सी: \ MyProject \ संसाधन। तो यह है कि जब परियोजना बनाता है यह उनके आवेदन/संस्थापक आदि

में अनुपालन करता है इस तरह, आप एक स्क्रिप्ट (फ़ाइल .bat) लिख सकते हैं जो संसाधन कंपनी प्रति जरूरत में प्रतियां।

चरण 1 - संसाधन फ़ोल्डर में सभी फ़ाइलें हटाएँ

चरण 2 - MSBuild.exe उपयोग आप परियोजना का निर्माण करने के

चरण 3 - एक निर्देशिका करने के लिए बिन/रिलीज फ़ोल्डर से जरूरत फ़ाइलों की प्रतिलिपि बनाएँ (अर्थातसी: \ रिलीज \ कंपनी ए)

चरण 4 - अगली कंपनी के विवरण लोड करने के लिए स्क्रिप्ट में चर बदलें। और चरण 1 से दोहराएं, इसलिए यह आवश्यक संसाधन फ़ाइलों और पुनर्निर्माणों पर प्रतिलिपि बनाता है।

+1

आपके उत्तर के लिए धन्यवाद। मैंने इसके बारे में सोचा नहीं है, यह वास्तव में सबसे अच्छा समाधान हो सकता है। – John

+1

इसका एक आसान समाधान (बिल्कुल सुरुचिपूर्ण नहीं), लेकिन यदि आप अधिक से अधिक कंपनियां कर रहे हैं, तो मैं सलाह देता हूं कि आप डीएलएल का उपयोग मॉड्यूल के रूप में अन्य समाधानों के साथ करें। या यदि आपको अधिक अनुकूलन मिलते हैं, तो गिट/एसवीएन जैसे कुछ का उपयोग करने पर विचार करें और परियोजना को शाखा बनाएं। फिर चेकआउट स्वचालित करें और टीमसिटी – JonWillis

+0

जैसे टूल का उपयोग करके निर्माण करें। अंत में मैंने सही संसाधन फ़ाइल प्राप्त करने के लिए एक सशर्त संकलन प्रतीक का उपयोग करके बैच और आईएम बनाया। – John

2

संसाधन स्ट्रिंग के लिए सबसे आसान वितरण किया जाएगा।

लेकिन ईमानदारी से, मैं इसे एक अनुकूलन सुविधा होना होगा। आखिरी चीज जो आप चाहते हैं, हर किसी के लोगो परिवर्तनों को बनाए रखना है: कानूनी कारण, कॉपीराइट केस, सनकी कलात्मक लाइसेंस इत्यादि।

जो कम है .... उन्हें एक स्वरूपित छवि प्रदान करें, और उन्हें असाइन करें रजिस्ट्री में या किसी प्रकार की मेटा फ़ाइल (एक्सएमएल, मैनिफेस्ट इत्यादि) में इंस्टॉलेशन और स्टोर के दौरान कंपनी का नाम

+0

आपके उत्तर के लिए धन्यवाद। एक वीएस परियोजना में अलग असेंबली के 2 संस्करण कैसे हो सकते हैं? – John

+0

@Abatonime आप उन्हें विभिन्न फ़ोल्डरों में संकलित करेंगे। –

4

आप कक्षा पुस्तकालय बना सकते हैं जिसमें 99% कोड शामिल है, और उसके बाद दो परियोजनाएं हैं जो प्रत्येक आम पुस्तकालय को 1% के साथ संदर्भित करता है जो प्रत्येक कंपनी के लिए अलग होता है। फिर पूरे समाधान का निर्माण प्रत्येक कंपनी के लिए निष्पादन योग्य उत्पन्न करेगा। इसका उपयोग करें यदि प्रत्येक कंपनी जो चाहता है उसके बीच अंतर इतना पर्याप्त है कि आपको [थोड़ा] अलग कोड होना चाहिए।

वैकल्पिक रूप से, आप वर्गों है कि डेटा, नहीं कोड पर निर्भर भिन्न हो बना सकता है। इस मामले में, इसका मतलब यह हो सकता है कि इसे निष्पादन योग्य में एम्बेड करने के बजाय फ़ाइल से लोगो प्राप्त करना, और कंपनी नाम के साथ कॉन्फ़िगरेशन xml फ़ाइल हो। यह आपको दोनों कंपनियों के लिए केवल एक निष्पादन योग्य होने की अनुमति देगा।

+0

??? मुझे लगता है कि उनकी कंपनी के पास कभी भी 2 से अधिक ग्राहक नहीं होंगे .... कभी भी। –

+3

@Xaade क्या आपने पहले पैराग्राफ के बाद पढ़ना बंद कर दिया था? और साथ ही, ऐसी विशिष्ट परियोजनाएं हैं जिनके पास केवल दो क्लाइंट हो सकते हैं, या अधिकतर "हर कोई" के लिए निर्माण कर सकते हैं और एक ऐसी कंपनी के लिए जो केवल उनके लिए एक कस्टम फीचर जोड़ा गया हो। – Servy

+0

हाँ, पहली बार मेरी आंखें चोट लगीं। –

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