2012-11-09 16 views
9

बस उत्सुक - जब भी मैं .csproj का xml देखता हूं, यह DefaultTargets="Build" से शुरू होता है और इसलिए मुझे लगता है कि <Target Name="Build"> मौजूद होना चाहिए; हालांकि, मुझे किसी भी .csproj फ़ाइल में यह डिफ़ॉल्ट लक्ष्य कभी नहीं मिला है।<target name = "Build"> किसी भी .csproj फ़ाइल में क्यों नहीं मिला है?

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

+0

rene

उत्तर

12

फ़ाइल के निचले भाग के पास आप इसे देखेंगे; <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> जो मानक लक्ष्यों को आयात करता है, "बिल्ड" इनमें से एक है। आयात आपकी प्रोजेक्ट फ़ाइल में उपलब्ध अन्य डेटा के आधार पर एक गतिशील फैशन में "बिल्ड" लक्ष्य उत्पन्न करता है।

1

वहाँ है एक या अधिक < आयात करें ...> परियोजना फ़ाइल है कि अन्य फ़ाइल (फ़ाइलें) है कि उस लक्ष्य होना चाहिए आयात में कहीं ...

-2

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

चीयर्स

+0

के माध्यम से आयात की गई बिल्डफाइल देखें, मैं आपके सुझाव की सराहना करता हूं लेकिन यह मेरे प्रश्न का उत्तर नहीं देता है। –

+0

हाँ मुझे पता है। क्योंकि जैसा कि आपने कहा था, सिर्फ एक सुझाव है कि मेरे अनुभव ने मुझे आपके लिए लिखा है। ;) – Rikki

5

एक csproj आम तौर पर इस है:

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 

जो MSDN के अनुसार भी Microsoft.Common.targets आयात करता है जो वह जगह है जहाँ कि लक्ष्य परिभाषित किया गया है।