2009-10-28 17 views
9

मैंने एक एमएसबिल्ड कार्य लिखा है जो तीसरे पक्ष के असेंबली का उपयोग करता है।निर्भरता के साथ कस्टम एमएसबिल्ड कार्य

जब मैं अपने प्रोजेक्ट में कार्य का उपयोग करता हूं, तो एमएसबिल्ड शिकायत करता है कि यह तीसरे पक्ष के असेंबली लोड नहीं कर सकता है (आश्चर्य की बात नहीं)।

मुझे तीसरे पक्ष के असेंबली कहां रखना चाहिए ताकि वे एमएसबिल्ड के लिए उपलब्ध हों। मैंने सफलता के बिना परियोजना संदर्भ जोड़ने की कोशिश की।

उत्तर

9

मुझे यकीन नहीं है कि मैंने अपनी समस्या बहुत अच्छी तरह से व्यक्त की है, लेकिन अब मुझे समाधान मिल गया है।

मेरी .proj फ़ाइल में, मैं निम्न सिंटैक्स के साथ अपने कस्टम कार्य संदर्भ ...

<UsingTask AssemblyFile="..\lib\MyCompany.MSBuild\MyCompany.MSBuild.dll" TaskName="CreateDatabase" /> 

मेरे CreateDatabase कार्य विभिन्न 3 पार्टी विधानसभाओं पर निर्भर करता है। हालांकि, इनमें से कुछ केवल प्रतिबिंब के माध्यम से संदर्भित हैं, इसलिए फ़ोल्डर में डिफ़ॉल्ट रूप से शामिल नहीं किया गया था ".. \ lib \ MyCompany.MSBuild"।

मैं उसी निर्देशिका में आवश्यक असेंबली लगाकर काम करने का काम करने की कोशिश कर रहा था .proj फ़ाइल कार्य को आमंत्रित करती है।

हालांकि, मुझे जो करना चाहिए था, वह संदर्भित कार्य निर्देशिका ".. \ lib \ MyCompany.MSBuild \" में असेंबली डाल रहा था।

सरल!

1

आप उन्हें जीएसी (ग्लोबल असेंबी कैश) में जोड़ सकते हैं। यह केवल तभी काम करता है जब इसे दृढ़ता से नामित किया जाता है।

आप यह भी सुनिश्चित कर सकते हैं कि आपने उन्हें परियोजना में संदर्भ जोड़ते समय स्थानीय = सही प्रतिलिपि के साथ चिह्नित किया है।

संबंधित मुद्दे