2012-01-14 19 views
6

में पंजीकरण करें। मुझे कई प्लेटफ़ॉर्म पर एक .NET नियंत्रण लाइब्रेरी को पैकेज करने और रिलीज़ करने की आवश्यकता है और इस परिनियोजन को स्वचालित करने के तरीके पर एक प्रश्न है (या जितना कुशल हो संभव) निर्माण स्क्रिप्ट और वीएस -2010 विन्यास के माध्यम से।वीएस -2010 एक एमएसआई में डीएलएल को पैकेज करने के लिए स्क्रिप्ट बनाएं और जीएसी

नियंत्रण पुस्तकालय को सिल्वरलाइट संस्करण (एसएल 3.0, 4.0, 5.0 के लिए अलग-अलग बनाता है) और WPF संस्करण (.NET3.5/.NET4.0 के लिए अलग-अलग बनाता है) के रूप में रिलीज़ किया जाना है। मुझे एक ही पुस्तकालयों के रिलीज और परीक्षण संस्करणों को निर्दिष्ट करने की आवश्यकता है। प्रीप्रोसेसर स्टेटमेंट ट्रियल के साथ कोड में परीक्षण संस्करणों को अलग किया जाएगा। परीक्षण और पूर्ण संस्करण दोनों रिलीज मोड में संकलित किया जाएगा।

मैं सोच रहा हूं कि इसे सबसे प्रभावी तरीके से कैसे हासिल किया जाए। मेरे वीएस -2010 समाधान में वर्तमान में डब्ल्यूपीएफ (.NET 4.0) और एसएल (एसएल 4.0) के लिए एक अलग परियोजना के लिए एक परियोजना है।

  • क्या मुझे लापता संस्करणों के लिए और csproj परियोजनाएं बनाने की आवश्यकता है, उदा। .NET 3.5 और SL 3.0 और 5.0?
  • मैं सभी डब्लूपीएफ डीएलएस के लिए सभी सिल्वरलाइट डीएलएल और एक एमएसआई के लिए एक एमएसआई बनाना चाहता हूं। क्या मुझे परीक्षण के रूप में संकलित संस्करणों के लिए और एमएसआई बनाने की ज़रूरत है? .NET या Silverlight ढांचे के प्रत्येक संस्करण के लिए अलग एमएसआई के बारे में क्या?
  • क्या build.targets का उपयोग करके उपरोक्त परिनियोजन पैकेजिंग प्राप्त करना संभव है या स्क्रिप्ट बनाना है?

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

अंत में जब नियंत्रण पुस्तकालयों को पुनर्वितरण किया जाता है, तो स्थापना आदर्श रूप से जीएसी में पंजीकरण के परिणामस्वरूप होनी चाहिए।

कोई टिप्पणी/सुझाव आपका स्वागत है।

सादर,

उत्तर

0

posterities खातिर मैं समाधान मैं competent_tech के बहुत जानकारीपूर्ण जवाब देने के लिए धन्यवाद के साथ आया था रिकॉर्डिंग कर रहा हूँ।

निम्नानुसार एक एमएसडीओएस बैच फ़ाइल का उपयोग करके हल किया गया।

  • #If परीक्षण स्विच का विचार डंप किया गया। इसके बजाए घटक को लाइसेंस फ़ाइल द्वारा लाइसेंस प्राप्त किया जाता है, इसलिए परीक्षण निर्माण रिलीज बिल्ड के समान होता है। इस देव काम जो आउटपुट निर्माण
  • MSBuild साथ सिल्वरलाइट और WPF उत्पादन परियोजनाओं के पुनर्निर्माण के लिए एक बैच फ़ाइल बनाया से प्राप्त कर रहे के लिए सिर्फ एक ही समाधान का मतलब है, एक से अधिक संस्करण
  • कॉपी किया गया DLLs से अधिक Nuget शैली निर्देशिका संरचना, उदा करने के लिए बनाने के लिए toolsversion स्विचिंग निर्माण/lib/net40, निर्माण/lib/SL4, निर्माण/lib/SL5 आदि ...
  • अंधेरा बनाया जगह में libs
  • XCopy उदाहरण से अधिक परियोजनाओं का निर्माण करने के लिए/उदाहरण/
  • उपयोग Powershell उदाहरण परियोजनाओं को संपादित करने के नए obfuscated आउटपुट का संदर्भ करने के लिए।

संदर्भ के लिए, कृपया removing/re-adding references और editing project files पर निम्नलिखित प्रश्न और उत्तर powershell साथ

2

आप ढांचे के विभिन्न संस्करणों के लिए जारी कर रहे हैं, तो आप विभिन्न परियोजनाओं की आवश्यकता होगी। आप शायद रनटाइम पर लक्ष्य ढांचे को स्विच करने से दूर हो सकते हैं, लेकिन ऐसे कई चर हैं, जब तक आप उन्हें सभी समझ और परीक्षण नहीं करते हैं, तो आप आसानी से अतिरिक्त परियोजनाएं बना सकते थे।

मुझे लगता है कि Installshield जैसे किसी इंस्टॉलेशन टूल में निवेश करने के लिए आपके पैसे के लायक होंगे, जिसकी आपकी इच्छित कार्यक्षमता के लिए अंतर्निहित समर्थन है।

मेरा मानना ​​है कि आप विभिन्न स्विच और अंतिम उपयोगकर्ता कुंजी (परीक्षण या वास्तविक इंस्टॉल ट्रिगर करने के लिए) का उपयोग करके एक ही इंस्टॉलशील्ड प्रोजेक्ट में अपनी सभी आवश्यकताओं को पूरा करने में सक्षम होना चाहिए, लेकिन आप संभावित रूप से परीक्षण और वास्तविक को अलग करने पर विचार कर सकते हैं लाइसेंसिंग योजना।

अद्यतन

तुम भी एक शुद्ध VS2010 समाधान के माध्यम से इस समस्या को हल कर सकते हैं, यह सिर्फ और अधिक जटिल है।

अपने लक्ष्यों के आधार पर, आपको कुल 5 परियोजनाएं करने की आवश्यकता होगी और प्रत्येक समाधान में 2 कॉन्फ़िगरेशन होंगे, एक परीक्षण के लिए रिलीज के लिए एक (जहां प्रीप्रोसेसर परिभाषित किया गया है)।

आप एक एकल निर्माण समाधान से दूर हो सकते हैं जिसमें सभी 5 परियोजनाएं शामिल हैं क्योंकि आप प्रत्येक परियोजना से आउटपुट को वीएस सेटअप प्रोजेक्ट के भीतर अलग-अलग संदर्भित कर सकते हैं।

रिलीज पर, आपको रिलीज के लिए एक बार और एक बार परीक्षण के लिए दो बार दौड़ना होगा, लेकिन आप आसानी से इसे MSBuild के साथ स्वचालित कर सकते हैं।

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

एक बहुत ही महत्वपूर्ण नोट है कि मुझे अभी याद आया क्योंकि मैं उपर्युक्त टाइप कर रहा था: एक बिंदु पर (यह तय हो सकता है), एमएसबिल्ड के माध्यम से विजुअल स्टूडियो 2010 सेटअप परियोजनाओं को बनाना संभव नहीं था, यही कारण है कि हम साथ गए devenv.com के माध्यम से निर्माण।

+0

धन्यवाद जानकारी के लिए देखते हैं, निश्चित रूप से दिलचस्प InstallShield के बारे में पता करने के लिए। आदर्श रूप में मैं शुद्ध बनाम 2010 समाधान की तलाश में हूं। शायद सभी स्क्रिप्ट पुनर्निर्माण के साथ विभिन्न समाधान/परियोजनाओं को स्थापित करने का तरीका है? –

+0

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

+0

धन्यवाद। लगता है v। व्यावहारिक। मुझे लगता है कि मैं #if परीक्षण छोड़ दूंगा और इसके बजाए इसे रनटाइम पर स्विच करने के लिए लाइसेंस कुंजी मॉडल होगा। इससे आवश्यक समाधान/परियोजनाओं की संख्या कम हो जाती है। –

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