2015-09-07 4 views
10

के माध्यम से फाइल बिल्डर जब मैं सैंडकैसल मदद फ़ाइल बिल्डर परियोजना फ़ाइल को चलाने के लिए Windows अध्यक्ष एवं प्रबंध निदेशक का उपयोग कर (उदाहरण के myproject.shfbproj के लिए), मैं एक कष्टप्रद मुद्दा मिल: $(SolutionDir)$(ProjectDir) जितना समान मान है, और इसका मतलब है कि प्रोजेक्ट प्रलेखन स्रोत सही तरीके से निर्माण नहीं करेंगे क्योंकि मैं कस्टम लक्ष्य जोड़ रहा हूं जो पहले से ही $(SolutionDir) का उपयोग करता है।

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

"C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" /p:Configuration=Development myproject.shfbproj 

वहाँ इस के लिए किसी भी समाधान नहीं है:

मैं निम्न आदेश (निर्देशिका से मार डाला जहां परियोजना संग्रहीत किया जाता है) का उपयोग कर रहा हूँ?

+0

आप जिस कमांड लाइन का उपयोग कर रहे हैं? 'msbuild myproject.shfbproj'? – m0sa

+0

@ m0sa हां, और बिल्ड कॉन्फ़िगरेशन को परिभाषित करने के लिए एक प्रॉपर्टी प्रदान करना –

+0

@ m0sa मैंने आपको पूर्ण कमान देने के लिए अपना क्यू अपडेट किया है। –

उत्तर

7

@ m0sa एक बहुत ही स्पष्ट तथ्य बताया गया है जबकि (के बाद से मैं सैंडकैसल मदद फ़ाइल बिल्डर परियोजना का निर्माण कर रहा हूँ, कोई वास्तविक समाधान निर्देशिका नहीं है), समस्या का निर्माण करते समय यह समस्या टीएफएस बिल्ड के दौरान भी हो रही थी जहां तथाकथित प्रलेखन प्रोजेक्ट रहता है।

<PropertyGroup> 
    <SolutionDir>$([System.IO.Path]::GetDirectoryName($(MSBuildProjectDirectory)))\</SolutionDir> 
    </PropertyGroup> 

मेरी समाधान के बाद से: प्रत्येक सी # परियोजना प्रलेखन परियोजना के हिस्से के रूप में बनाया जाना चाहिए में एक SolutionDir संपत्ति जोड़ने:

अभी के लिए मैं इस मुद्दे को एक बुरा वैकल्पिक हल का उपयोग कर हल करने के लिए प्रबंधित किया है फाइल हमेशा सैंडकैसल हेल्प फाइल बिल्डर प्रोजेक्ट की मूल निर्देशिका में स्थित होगी, मेरे मामले में यह कामकाज काम करता है ...

अब परियोजनाओं का संदर्भ दिया गया है क्योंकि प्रलेखन स्रोत एक कस्टम प्रोजेक्ट आयात करने में सक्षम हैं जहां मैं सामान्य एमएसबिल्ड दोनों गुणों को परिभाषित करता हूं दृश्य में स्टूडियो बनाता है या बाहरी:

<Import Project="$(SolutionDir)MSBuild\Common.properties" /> 
14

यदि आप अपना समाधान (.sln फ़ाइल) बना रहे हैं तो आपको केवल सही $(SolutionDir) मिल जाएगा। .shfbproj एक प्रोजेक्ट फ़ाइल है, और इस तरह के इसके मूल समाधान का कोई संदर्भ नहीं है। आप स्पष्ट अपने आदेश पंक्ति में $(SolutionDir) निर्दिष्ट करने का प्रयास कर सकते हैं:

msbuild /p:Configuration=Development /p:SolutionDir=MySolutionDir myproject.shfbproj 

संदर्भ के लिए: http://blogs.msdn.com/b/pfedev/archive/2008/09/26/solutiondir-and-msbuild.aspx

+0

मैंने भाग्य के साथ यह कोशिश की। मुझे सही सी $ (समाधान डीआईआर) 'मूल्य की आवश्यकता होने से पहले प्रत्येक सीस्पोज़ में पूरे समाधान डीआईआर को परिभाषित करने में समस्या का समाधान करने में कामयाब रहा .. –

+0

मैं कुछ मिनटों में वर्कअराउंड पोस्ट करूंगा और हम इसकी चर्चा कर सकते हैं ... –

+0

इस समाधान ने किया मेरे लिए बस ठीक काम करो। – zellus