2011-10-24 26 views
8

बिल्डिंग जब मैं सैंडकासल हेल्प फ़ाइल बिल्डर का उपयोग कर रहा हूं, तो मैं सैंडकासल हेल्प फाइल बिल्डर का उपयोग कर रहा हूं ताकि मेरी सी # एक्सएमएल-डीओसी फाइल को वेबसाइट प्रारूप में आउटपुट किया जा सके। मैं कमांड लाइन से समीकरण कैसे पूरा कर सकता हूं ताकि वास्तविक प्रोजेक्ट बनाने के दौरान मैं विजुअल स्टूडियो में बिल्ड इवेंट के रूप में इसे जोड़ सकूं?विजुअल स्टूडियो प्रोजेक्ट

अंतिम लक्ष्य वेबसाइट स्टूडियो प्रोजेक्ट बनाने पर वेबसाइट सहायता फ़ाइल सामग्री बनाना है।

उत्तर

9

स्कॉट वाइली ने संकेत दिया है, आपको विजुअल स्टूडियो के प्रोजेक्ट गुणों में पोस्ट बिल्ड इवेंट कमांड लाइन में इसे निर्दिष्ट करने की आवश्यकता है। हालांकि, मैं Sandcastle की बजाय सीधे Sandcastle Help File Builder (SHFB) का उपयोग करने का सुझाव दूंगा।

 
    C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
     /p:Configuration=Release myProject.shfbproj 
: यह कमांड लाइन कॉल छोटे और सरल रूप में नीचे दिखाया गया है, लेकिन ध्यान दें कि पहले आप SHFB जीयूआई, जो ".shfbproj" प्रत्यय के साथ एक MSBuild संगत निर्माण फ़ाइल बनाता है साथ SHFB परियोजना को कॉन्फिगर करना आसान हो गया है

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

<exec executable="${msbuild}" dir="${csharpdoc}" output="${csharpdoc.log}"> 
    <arg value="/p:Configuration=Release"/> 
    <arg value="myProject.shfbproj"/> 
</exec> 

मेरी प्राथमिकता है कि पूरे निर्माण कमांड लाइन से चलाने योग्य प्रोग्राम इसलिए कोई आवश्यक बातचीत कर रहे हैं होना चाहिए (उदाहरण के लिए दृश्य स्टूडियो की शुरूआत , आदि।)। यह या तो अनुसूचित आवर्ती कार्य या खोल से मांग पर चलाने के लिए लचीलापन प्रदान करता है।

+1

इसलिए, जैसा कि किसी अन्य उत्तर पर टिप्पणी पर बताया गया है, सामान्य विजुअल स्टूडियो बिल्ड गुणों पर पोस्ट-बिल्ड ईवेंट के रूप में, मैंने MSBuild के साथ SHFBPROJ फ़ाइल बनाने के लिए कमांड जोड़ा (जैसा कि आपने पहले कोड स्निपेट पर पोस्ट किया था)। हालांकि, जब निर्माण चल रहा था, तो उसने टास्क मैनेजर में MSBuild.exe के 1000 से अधिक उदाहरण शुरू किए और लॉक हो गए। कोई विचार क्यों? –

+0

बीटीडब्लू, जब मैं एमएसबिल्ड के बजाय इसे संकलित करने के लिए हेल्प बिल्डर का उपयोग करता हूं, तो इसमें लगभग 2 मिनट लगते हैं। पोस्ट बिल्ड में इसे जोड़ने से 100% CPU उपयोग पर एक घंटे से अधिक समय तक चल रहा था जब तक कि आखिरकार मैंने इसे मार डाला नहीं। –

+0

@ जॉन चैपलैन: वह "हेल्प बिल्डर" क्या है जिसका आप जिक्र कर रहे हैं? क्या यह एसएचएफबी पैकेज में कुछ शामिल है? –

0

यदि आप अपने निर्माण उपकरण के लिए एमएसबिल्ड का उपयोग कर रहे हैं तो यह tutorial है जिसे मैंने थोड़ी देर पहले उपयोग किया था।

codeplex पर एक स्क्रिप्ट भी है जिसे आप उपयोग करने में देख सकते हैं जो आपकी मदद कर सकता है।

आशा है कि इससे मदद मिलती है!

+0

ऐसा लगता है कि इसका उपयोग टीएफएस बिल्ड के लिए किया जाता है। मैं इसे सामान्य परियोजना निर्माण पर कैसे करूं? –

1

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

+0

तकनीकी रूप से यदि आप गुण विंडो में अपनी बिल्ड इवेंट संपादित करते हैं तो आप MSBuild स्वचालित निर्माण टूल का उपयोग कर रहे हैं। बस स्पष्ट करना चाहता था। – ajrawson

+0

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

0

मुझे समाधान में * .shfbproj प्रोजेक्ट जोड़ने के लिए यह सबसे आसान लगता है। यह वीएस 2010 के अंदर ठीक (हालांकि थोड़ा धीमा) बनाता है।

+0

मैं वीएस2013 में shfbproj फ़ाइल नहीं जोड़ सकता। (मेरे पास SHFB एक्सटेंशन इंस्टॉल नहीं है क्योंकि समाधान निर्माण लक्ष्य को प्रदूषित कर सकता है।) – user2864740