यदि संभव हो तो मैं काम करने की कोशिश कर रहा हूं, विजुअल स्टूडियो में कस्टम टूल का उपयोग करते समय, एक फ़ाइल की सामग्री में बदलाव करने के लिए, दूसरे के कस्टम टूल को ट्रिगर करें।विजुअल स्टूडियो में, क्या मैं एक फ़ाइल को किसी अन्य का कस्टम टूल चला सकता हूं? (इस मामले में Xsd2Code का उपयोग कर)
मेरे परिदृश्य यह है:
एक दृश्य स्टूडियो सी # परियोजना में, मैं एक "master.xsd" XML स्कीमा जो कई अन्य अन्य XSD फ़ाइलें शामिल है। मैं स्कीमा से .cs उत्पन्न करने के लिए Xsd2Code विजुअल स्टूडियो कस्टम टूल का उपयोग कर रहा हूं। यह ठीक काम करता है जब master.xsd स्वयं बदलता है, लेकिन मैं कस्टम मास्टर को फ़ाइल master.xsd पर चलाने के लिए चाहूंगा जब किसी अन्य xsds में से कोई एक बदल जाए।
क्या किसी अन्य फ़ाइल का एक और तरीका ट्रिगर करने का कोई तरीका है?
[संपादित - कारण है कि मैं इस के लिए एक कस्टम उपकरण का उपयोग कर में देख रहा हूँ पर और अधिक विस्तार]
वर्तमान में हम एक GenerateFiles.bat फ़ाइल है कि कोड fiels उत्पन्न करने के लिए कमांड लाइन से Xsd2Code कॉल स्कीमा से (जैसा कि नीचे मैटडेवी द्वारा सुझाया गया है)। यह काम करता है, बस बहुत धीमा है।
समस्या यह है कि प्रत्येक बिल्ड Xsd2Code पर चलना होगा, लेकिन कई अन्य परियोजनाएं इस परियोजना पर स्कीमा के साथ निर्भर करती हैं, लेकिन वे सभी भी फिर से संकलित हो जाएंगे, भले ही कुछ भी नहीं बदला हो। व्यावहारिक उपरोक्त यह है कि एक यूनिट परीक्षण में भी मामूली परिवर्तन में आधे परियोजनाओं को पुन: सम्मिलित करना शामिल है। यही कारण है कि स्कीमा में बदलाव होने पर हम केवल कोड फ़ाइलों को उत्पन्न करने के लिए कस्टम टूल दृष्टिकोण देख रहे हैं।
सुझाव के लिए धन्यवाद। दुर्भाग्यवश, इस समय हम इसे करते हैं, और यह बहुत धीमा है।समस्या यह है कि प्रत्येक बिल्ड Xsd2Code पर, चलाएगा, लेकिन कई अन्य परियोजनाएं इस परियोजना पर स्कीमा के साथ निर्भर करती हैं, लेकिन वे सभी भी फिर से संकलित हो जाएंगे, भले ही कुछ भी नहीं बदला हो। यही कारण है कि यदि स्कीमा बदलता है तो मैं केवल कोड फ़ाइलों को उत्पन्न करने के लिए कस्टम टूल दृष्टिकोण देख रहा हूं। हालांकि अन्य परिदृश्यों में, मुझे लगता है कि आपके द्वारा विस्तारित दृष्टिकोण एक अच्छा है। –
ओह कठिन एक। पहली बात जो दिमाग में आती है वह xsd2code चरण को छोड़ रहा है जब xsd फ़ाइल अपरिवर्तित है। इसमें थोड़ी अधिक जटिल पूर्व-निर्माण बैच स्क्रिप्ट शामिल हो सकती है, संभवतः xsd फ़ाइल का हैश उत्पन्न करना और इसे पहले से संग्रहीत हैश से तुलना करना। लेकिन मैं अभी अनुमान लगा रहा हूं :) – MattDavey
@RobLevine संपादित करें – MattDavey