मुझे नहीं पता कि आप वीएस कैश को कैसे अक्षम करेंगे, हालांकि मेरे पास एक वर्कअराउंड हो सकता है जो आपको समाधान को फिर से लोड किए बिना निर्माण लक्ष्य को संपादित करने की अनुमति देगा।
आप अपनी प्रोज फ़ाइल में एमएसबिल्ड कार्य का उपयोग एक रैपर लक्ष्य को कॉल करने के लिए कर सकते हैं जो आपकी प्रतिलिपि निर्भरता.target फ़ाइल को प्रतिलिपि पर निर्भर करता है। [RandomNumber]। लक्ष्य, फिर नई प्रतिलिपि बनाई गई फ़ाइल में अपनी प्रतिलिपि निर्भरता लक्ष्य को आमंत्रित करता है, और अंत में इसे हटा देता है ।
यह वीएस को प्रत्येक आमंत्रण पर लक्ष्य को फिर से लोड करने के लिए मजबूर करेगा क्योंकि फ़ाइल नाम अलग है।
myProject.proj
AfterBuild लक्ष्य को यह करें:: - निर्माण पर
<MSBuild Projects="Wrapper.target" Targets="MyWrappedTarget" UnloadProjectsOnCompletion="true"/>
Wrapper.target
यहाँ हम लक्ष्य है कि होगा है
यहाँ एक उदाहरण है समय - असली लक्ष्य फ़ाइल की प्रतिलिपि बनाएँ और इसके भीतर वांछित निर्माण लक्ष्य का आह्वान करें (मैंने एक इनलाइन सी # कार्य का उपयोग किया है जो केवल एमएसबिल्ड 4.0 में उपलब्ध है):
<UsingTask TaskName="RandomNumber" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<Number ParameterType="System.Int32" Output="true"/>
</ParameterGroup>
<Task>
<Code Type="Fragment" Language="cs">
<!-- CDATA -->
Random rndGenerator = new Random();
Number = rndGenerator.Next(Int32.MaxValue);
<!-- CDATA -->
</Code>
</Task>
</UsingTask>
<Target Name="MyWrappedTarget">
<Message Text="MyWrappedTarget target called"/>
<RandomNumber>
<Output TaskParameter="Number" PropertyName="FileNumber"/>
</RandomNumber>
<PropertyGroup>
<CopiedTarget>inner.test.$(FileNumber).target</CopiedTarget>
</PropertyGroup>
<Copy SourceFiles="inner.test.target" DestinationFiles="$(CopiedTarget)"/>
<MSBuild Projects="$(CopiedTarget)" Targets="_innerTestTarget"/>
<Delete Files="$(CopiedTarget)"/>
</Target>
inner.test.target
यह वास्तविक निर्माण लक्ष्य आप पर अमल करना चाहते हैं, इस उदाहरण में यह एक साधारण फ़ाइल प्रतिलिपि है।
<Target Name="_innerTestTarget">
<Message Text="This is a inner test text message"/>
<Copy SourceFiles="x.txt" DestinationFiles="x1.txt"/>
</Target>
यह उत्पादन तैयार नहीं है, लेकिन उम्मीद है कि मेरे बिंदु को दिखाता है।
इस (थोड़ी सी गठित) प्रक्रिया के साथ, आप आंतरिक.test.target फ़ाइल को VS में समाधान को फिर से लोड किए बिना बदल सकते हैं।
ग्रेट सॉल्यूशन! [मुझे] के लिए काम किया (http://stackoverflow.com/q/9227641/684399) – CitizenInsane
एक उचित कामकाज की तरह लगता है। एमएसबिल्ड 4 के लिए एफवाईआई आप CreateProperty के बजाय लक्ष्य के अंदर PropertyGroup का उपयोग कर सकते हैं। –
टिप के लिए धन्यवाद, मैंने इसे बदल दिया ... बहुत अच्छा लगता है – Martin