कई परियोजनाओं वाले समाधान के हिस्से के रूप में, मेरे पास एक प्रोजेक्ट है जो संदर्भ (<ProjectReference>
समाधान में तीन अन्य परियोजनाओं के साथ-साथ कुछ अन्य) के माध्यम से संदर्भित करता है। AfterBuild
में, मुझे 3 विशिष्ट आश्रित परियोजनाओं के आउटपुट को किसी अन्य स्थान पर कॉपी करने की आवश्यकता है।एमएसबिल्ड में प्रोजेक्ट रिफरेंस के आउटपुट को अनावश्यक पुनर्निर्माण ट्रिगर किए बिना
वाया विभिन्न अतः जवाब, आदि तरह से मैं पर बसे है कि पूरा करने के लिए किया गया था:
<MSBuild
Projects="@(ProjectReference)"
Targets="Build"
BuildInParallel="true"
Condition="'%(Name)'=='ProjectA' OR '%(Name)'=='ProjectB' OR '%(Name)'=='ProjectC'">
<Output TaskParameter="TargetOutputs" ItemName="DependentAssemblies" />
</MSBuild>
<Copy SourceFiles="@(DependentAssemblies)" DestinationFolder="XX" SkipUnchangedFiles="true" />
हालांकि, मैं इस के साथ समस्याओं का सामना किया। <MSBuild
चरण IncrementalClean
कार्य ProjectC
के आउटपुट को हटाने में समाप्त होता है। VS2008 के तहत इसे चलाते समय, build.force
प्रोजेक्टसी के obj/Debug
फ़ोल्डर में फ़ाइल में जमा किया जा रहा है, जो कि अगर मैं AfterBuild
लक्ष्य वाले प्रोजेक्ट को शामिल करता हूं, तो पूरे समाधान पर बिल्ड करते समय प्रोजेक्टसी को पुनर्निर्मित कर देता है, जबकि यदि कोई इस परियोजना को निर्माण से बाहर करता है, यह [सही ढंग से] ProjectC (और गंभीर रूप से प्रोजेक्टसी के सभी आश्रितों के पुनर्निर्माण) के पुनर्निर्माण को ट्रिगर नहीं करता है। यह इस मामले में वीएस-विशिष्ट चाल हो सकता है जो टीमबिल्ड या अन्य कमांडलाइन एमएसबिल्ड आमंत्रण के संदर्भ में नहीं होगा (लेकिन सबसे आम उपयोग वीएस के माध्यम से होगा, इसलिए मुझे इसे किसी भी तरह से हल करने की आवश्यकता है)
आश्रित परियोजनाओं (और सामान्य रूप से शेष समाधान) सभी को वीएस के साथ अंतःक्रियात्मक रूप से बनाया गया है, और इसलिए ProjectRefence
के सापेक्ष पथ आदि शामिल हैं। मैंने देखा है कि इस मुद्दे का कारण होने की संभावना है - लेकिन बिना किसी पूर्ण स्पष्टीकरण के, या जब यह तय किया जाएगा या इसके आसपास कैसे काम करना है। दूसरे शब्दों में, मुझे वास्तव में दिलचस्पी नहीं है उदा। .csproj को हाथ से संपादित करके ProjectReference
पथों को पूर्ण पथों में परिवर्तित करना।
हालांकि यह पूरी तरह संभव मैं कुछ बेवकूफ कर रहा हूँ और किसी को तुरंत बाहर बिंदु होगा कि यह क्या है (जो बहुत अच्छा होगा), आश्वासन दिया जा रहा /v:diag
से अधिक आउटपुट आदि poring (हालांकि मैंने कोशिश नहीं की है बहुत समय बिताया है जमीन से एक रेप्रो निर्माण करने के लिए - यह एक अपेक्षाकृत जटिल समग्र निर्माण के संदर्भ) में है
सबसे पहले, इस गूढ़ व्यक्ति को अपने पहले कभी SO उत्तर के रूप में चुनने पर धन्यवाद/बधाई! मैं व्यक्तिगत रूप से इस प्रकार की MSBuild के आंतरिक भागों पर निर्भरता को शुरू करने के बारे में मितभाषी होगा, लेकिन हाँ, यह निश्चित रूप से मुझे प्राप्त करने के लिए "क्या फ़ाइलों यह लिखा" प्रोग्राम के रूप में की अनुमति होगी! SO पर कुछ अन्य "आउटपुट की गणना करें" प्रश्न हैं कि यह एक उत्तर के रूप में बेहतर फिट हो सकता है। मेरे लिए यहां मुख्य मुद्दा यह है कि '