2012-02-15 35 views
42

Noda Time के खिलाफ issue है इसके विरुद्ध XML दस्तावेज़ फ़ाइल में जहाजों के सभी आंतरिक और निजी सदस्य भी शामिल हैं - जो शर्म की बात है।SHFB के IntelliSenseComponent के आउटपुट फ़ोल्डर पर कौन से नियम लागू होते हैं?

सौभाग्य से, Sandcastle Help File Builder में एक कस्टम निर्माण घटक है - IntelliSenseComponent - जो वास्तव में सही बात है ... सिद्धांत में। दुर्भाग्यवश, मैं काम नहीं कर सकता कि पृथ्वी पर इसे कैसे ठीक से कॉन्फ़िगर किया जाए।

प्रलेखन इस उदाहरण देता है:

<output includeNamespaces="false" namespacesFile="Namespaces" 
    folder="{@OutputFolder}" /> 

और राज्यों: से सैंडकैसल मदद फ़ाइल बिल्डर के विन्यास फाइल

ऊपर दिए गए उदाहरण लिया जाता है। जब इसका उपयोग किया जाता है, तो प्रतिस्थापन टैग {@SHFBFolder} और {@OutputFolder} का उपयोग फ़ाइल फ़ाइल निर्माता और फ़ाइल पथ में प्रोजेक्ट के आउटपुट फ़ोल्डर को सम्मिलित करने के लिए किया जाता है। ये उचित मूल्यों के साथ निर्माण समय पर प्रतिस्थापित किए जाते हैं। यदि आपके स्वयं के निर्माण स्क्रिप्ट में घटक का उपयोग करते हैं, तो क्रमशः घटक असेंबली और आउटपुट फ़ोल्डर में टैग को प्रतिबिंबित या पूर्ण पथ से प्रतिस्थापित करें।

ठीक है, मैं बजे SHFB का उपयोग कर, इसलिए मुझे लगता है कि काम करने की उम्मीद होगी। हालांकि, मुझे काम करने के लिए एक पूर्ण पथ के अलावा कुछ भी नहीं मिल सकता है। मैं कोशिश की है:

folder="." 
folder="{@OutputFolder}" 
folder="{@OutputFolder}XYZZY" 
folder="{@OutputFolder}\XYZZY" 
folder="{@OutputFolder}/XYZZY" 
folder="{@OutputFolder}/XYZZY/" 

(। मैं सिर्फ कुछ के लिए खोज करने के लिए आसान है कि के रूप में xyzzy उपयोग कर रहा हूँ)

source code को देखते हुए, मैं आशा व्यक्त की चाहते हैं कि मैं एक वातावरण चर इस्तेमाल कर सकते हैं, लेकिन इस काम नहीं किया:

folder="%CD%\XYZZY" 

हालांकि इस किया था ...

folder="%USERPROFILE%\XYZZY" 

यह काम करता है:

folder="c:\users\jon\test\xyzzy" 

... लेकिन मैं वास्तव में वहां एक पूर्ण पथ-नाम नहीं चाहता हूं।

दस्तावेज़ीकरण से पता चलता है कि यह सब वास्तव में आसान होना चाहिए ... मुझे क्या याद आ रही है?

संस्करण शामिल:

  • SHFB: 1.9.3.0
  • सैंडकैसल: 2.6.10621.1
+0

'फ़ोल्डर ="% सीडी% \ XYZZY "' काम नहीं करता है क्योंकि '% सीडी%' 'Environment.ExpandEnvironmentVariables 'द्वारा विस्तारित नहीं किया गया है जो IntelliSenseComponent उपयोग करता है। मेरा मानना ​​है कि इसे केवल 'cmd.exe' द्वारा विस्तारित किया जा सकता है (जैसे% TIME%,% सीएमडीसीएमडीलाइन%, आदि) –

उत्तर

44

मेरे प्रयोगों से पता चला है कि SHFB के IntelliSenseComponent सही ढंग से इलाज {@OutputFolder} किया था, लेकिन वहाँ एक अति सूक्ष्म अंतर है।

folder विशेषता (आपके मामले में .\docs\api) अंदर एक फ़ोल्डर को

<output includeNamespaces="false" namespacesFile="Namespaces" 
     folder="..." /> 

अंक में उल्लेख किया था तो एक परियोजना की OutputPath फ़ोल्डर तो SHFB के निर्माण प्रक्रिया फ़ोल्डर बनाता है, लेकिन फिर वेबसाइट सामग्री पैदा करने से पहले इसे हटा देता है :

Last step completed in 00:00:34.5875 
------------------------------- 
Combining conceptual and API intermediate TOC files... 

Clearing any prior web output 
    Last step completed in 00:00:00.2360 
------------------------------- 
Extracting HTML info for HTML Help 1 and/or website... 

समस्या यह है कि {@OutputFolder} का डिफ़ॉल्ट मान $(OutputPath) के मान के समान ही है, इसलिए यदि आप folder विशेषता में {@OutputFolder}\foo जैसे कुछ डालते हैं तो निर्माण समाप्त होने के बाद आप कभी भी foo नहीं देखेंगे।

समाधान सरल है:

<output includeNamespaces="false" namespacesFile="Namespaces" 
     folder="{@OutputFolder}\..\distilledApi" /> 
<!--       ^^  --> 

आशा इस मदद करता है: एक फ़ोल्डर है कि अपनी परियोजना के उत्पादन फ़ोल्डर की बाहर स्थित है इस तरह, निर्दिष्ट करें।