2009-01-12 17 views
10

में स्टूडियो के "कस्टम उपकरण" का प्रयोग कोड में कुछ टेम्पलेट फ़ाइलों Munge को विजुअल स्टूडियो के लिए मैं एक "कस्टम उपकरण" मिल गया है। स्थिरता और पोर्टेबिलिटी के लिए मैं विजुअल स्टूडियो के बाहर बिल्ड करते समय एमएसबिल्ड से इस टेम्पलेट प्रोसेसर को चलाने में सक्षम होना चाहता हूं।MSBuild

दृश्य स्टूडियो फ़ाइलों के लिए निम्नलिखित के टुकड़े बनाता है:

<!-- the template --> 
<None Include="Template.in"> 
    <Generator>Template Processor</Generator> 
    <LastGenOutput>Template.in.Designer.cs</LastGenOutput> 
</None> 
<!-- generated file --> 
<Compile Include="Template.in.Designer.cs"> 
    <AutoGen>True</AutoGen> 
    <DesignTime>True</DesignTime> 
    <DependentUpon>Template.in</DependentUpon> 
</Compile> 

समस्या है कि यहाँ Template.in केवल स्टूडियो द्वारा संसाधित किया जाता है, लेकिन नहीं MSBuild, जो भी हो सकती है के द्वारा होता है बाहर के तारीख Designer.cs फ़ाइलें।

(अपने आप को या तो लागू करने से कहा MSBuild कार्य या प्रोसेसर अनुकूल) (रजिस्ट्री से अपने स्थान लोड करने के लिए भी शामिल है) वहाँ एक मौजूदा MSBuild कार्य सीधे IVsSingleFileGenerator उपयोग कर सकते हैं कि है या मैं मैन्युअल प्रोसेसर कॉल करने के लिए क्या है?

दिलचस्प बात यह है MSDN पर Using MSBuild लेख का कहना है:

एकल फ़ाइल जनरेटर ही सुलभ डिजाइन समय पर कर रहे हैं, लेकिन MSBuild कार्य डिजाइन समय और निर्माण समय पर इस्तेमाल किया जा सकता है। अधिकतम लचीलेपन के लिए, इसलिए MSBuild कार्य करने के लिए उपयोग को बदलने और कोड उत्पन्न करते हैं। अधिक जानकारी के लिए, परियोजना आइटम (दृश्य स्टूडियो SDK) देखें।


अद्यतन: मैं एक MSBuild कार्य में इस विशिष्ट कस्टम उपकरण को हैक कर लिया गया है, लेकिन यह बहुत नहीं है। मैं अभी भी एक अच्छी तरह से बनाए रखा जेनेरिक समाधान पसंद करेंगे। मेरे पास मेरे ब्लॉग पर posted the source है।

+1

मैं एक एसएफजी लिखने के लिए उचित परेशानी में गया (देखें http://www.codeproject.com/Articles/686405/Writing-a- सिंगल- फ़ाइल- जनरेटर) केवल अंत में महसूस करने के लिए कि वे डॉन करते हैं स्वचालित रूप से निर्माण नहीं करते हैं और एमएसबिल्ड के साथ काम नहीं करते हैं। बेहतर दृष्टिकोण क्या है? मैं आपके ब्लॉग लिंक तक नहीं पहुंच सकता। – Qwertie

उत्तर

1

जब आप VisualStudio के भीतर से अपने कस्टम उपकरण निर्दिष्ट करते हैं, क्या यह अपनी परियोजना या समाधान फ़ाइलों को जोड़ता है? चूंकि वे सिर्फ msbuild फाइलें हैं, इसलिए आप अपनी खुद की बिल्ड फ़ाइलों के लिए टेम्पलेट के रूप में जोड़े गए XML को उपयोग करने में सक्षम हो सकते हैं।

+0

अच्छा संकेत। मैंने एक उदाहरण जोड़ा है –