2013-01-12 50 views
6

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

अधिमानतः मैं एक लिनक्स सीआई सर्वर चाहता हूं जो एक्सबील्ड का उपयोग करने के बजाय ऐसा करता है, हालांकि मैं इसे केवल डीडीएस में प्रोजेक्ट बनाने के लिए प्राप्त कर सकता हूं, मैं इसे जेएस, सीएसएस, विचार इत्यादि के साथ कैसे प्रकाशित और तैनात कर सकता हूं। ?

+0

आप हाथ से संपादित किया है MSBuild फ़ाइल? – flup

+0

और तुम निर्माण कार्रवाई सामग्री के साथ अपनी सामग्री फ़ाइलों को चिह्नित किया है? – flup

+0

मैं लिंक का पालन लगता है कि इस समस्या को हल करने के लिए मदद कर सकता है - http://stackoverflow.com/questions/32781983/code-publish-through-jenkins-for-net-mvc-solution-in-ubuntu-machine/32837666#32837666 – user3220129

उत्तर

8

आम तौर पर "बिल्ड डीएलएस" भाग सबसे कठिन हिस्सा है। यदि आपको यह हल हो गया है, तो आप वहां 80% हैं। दूसरा आधा सामग्री प्रकाशित कर रहा है। इसके सबसे प्राथमिक पहलू में, आप स्रोत डीआईआर से वेबसाइट फ़ोल्डर में फ़ाइलों का एक हिस्सा कॉपी कर रहे हैं। MSDeploy माइक्रोसॉफ्ट का इसका जवाब है, और यह बहुत जटिल है। मैंने एक एनएएनटी कार्य बनाया जो ऐसा करता है, हालांकि यह आपके विशिष्ट परिदृश्य पर भी लागू नहीं होता है। हालांकि, सामान्य पद्धति:

  1. वेब परियोजनाओं की तलाश में एसएलएन फ़ाइल क्रॉल करें। एक वेब परियोजना क्या बनाता है? Sln फ़ाइल में csproj फ़ाइल या प्रोजेक्ट प्रकार आईडी में तकनीकी रूप से guids। मैंने धोखा दिया और इसे परिभाषित किया "लक्ष्य फ़ोल्डर में एक web.config फ़ाइल शामिल है"। अगर आपके पास अपने समाधान में केवल एक वेबसाइट प्रोजेक्ट है, तो आप इस चरण को छोड़ सकते हैं, और बस .csproj फ़ाइल को हार्ड-कोड कर सकते हैं।

  2. <Content Include="some\file.ext" /> नोड्स की तलाश में csproj फ़ाइल क्रॉल करें। XPath ऐसा कर सकता है, लिंक से एक्सएमएल भी ऐसा कर सकता है। यह आपको सभी .csx, .cshtml, .js, .css, .png, .config, आदि इत्यादि देता है, जबकि ध्यान से सभी .cs फ़ाइलों को पीछे छोड़ देता है। वास्तविक मूल फ़ाइल स्थान प्राप्त करने के लिए आपको .csproj फ़ाइल के पथ को उपसर्ग करने की आवश्यकता होगी, और आप यह सुनिश्चित करना चाहते हैं कि आप गंतव्य स्थान में फ़ोल्डर संरचना को संरक्षित रखें। लेकिन फाइल सूची कटाई की तुलना में यह मामूली है।

  3. अब आपको फ़ाइल सूची मिल गई है, इसके माध्यम से स्रोत फ़ोल्डर से गंतव्य फ़ोल्डर में कॉपी करने के माध्यम से लूप करें। (आप शायद पहले गंतव्य फ़ोल्डर को खाली करना चाहते हैं या बाद में पिछली तैनाती से अतिरिक्त फ़ाइलों को छीनना चाहते हैं। मुझे पूर्व आसान लगता है।) केवल एक चीज जिसे csproj फ़ाइल क्रॉल ने आपको बिन फ़ोल्डर सामग्री नहीं दी थी, लेकिन यह केक है: प्रति बिन फ़ोल्डर की सभी सामग्री। : डी (कि क्या फ़ाइलों .pdb कॉपी करने के लिए के बारे में एक स्वस्थ बहस है, लेकिन मैं हाँ कहने।)

पर्चा ऊपर 3 चरणों ऐसा करने के लिए, तो यह या तो एक XBuild कार्य से कॉल या दोनों XBuild फोन एक स्क्रिप्ट और सीआई प्रक्रिया से यह स्क्रिप्ट। Poof। आपके पास एक तैनाती लक्ष्य है। हैप्पी कोडिंग!

+0

धन्यवाद, मैंने ऐसा करने के लिए एक शेल स्क्रिप्ट बनाई है। खूबसूरती से काम करता है, मुझे हमेशा लगता है कि तैनाती प्रक्रिया को दोहराने के लिए यह बहुत जटिल था। – Dharun

+0

खुशी है कि यह बहुत अच्छा काम किया। – robrich

0

अधिमानतः मैं एक लिनक्स सीआई सर्वर है कि करता है इस XBuild बजाय का उपयोग कर अच्छी खबर यह है कि आप एक समाधान मैं this लेख में मिल के साथ ऐसा कर सकते हैं करना चाहते हैं। यहां उपरोक्त आलेख से एक अंश और वर्कअराउंड लिंक है:

बिल्ड सर्वर में माइक्रोसॉफ्ट एमवीसी (कोई भी संस्करण) स्थापित नहीं है। हालांकि, माइक्रोसॉफ्ट एमवीसी पर पर http://nuget.org/packages/Microsoft.AspNet.Mvc पर उपलब्ध है, यदि आपको पुराने संस्करण को स्थापित करने के लिए की आवश्यकता है, तो पृष्ठ के नीचे पर पुराने संस्करण पर क्लिक करें और आप इस पर निर्देशों तक पहुंचेंगे कि कैसे ढांचे के संस्करण को स्थापित करने के लिए।

आशा है कि यह आपके लिए आसान बना देगा!

+0

लिंक के लिए धन्यवाद, लेकिन मैं यह नहीं लगता है, एक वेबसाइट की तैनाती पूरी तरह से संभाल लेंगे करते ही DLLs संकलन – Dharun

0

@DHarun का विचार बहुत अच्छा काम करता है! मैंने अभी @ दर्हर के विचार के आधार पर एक छोटी सी लिपि लिखी है, उम्मीद है कि यह दूसरों की मदद कर सकती है। https://github.com/z-ji/MonoWebPublisher