2012-09-14 19 views
5

के बाद निष्पादित करता है मैं अपने app.configs को बदलने के लिए SlowCheetah का उपयोग करता हूं। मेरे पास एक बहु-परियोजना समाधान है जहां परियोजनाओं में से एक एक पोस्ट-बिल्ड इवेंट निष्पादित करता है जहां बिन के आउटपुट को कहीं और कॉपी किया जाता है। मैंने पाया है कि स्लोचेटाह पोस्ट-बिल्ड इवेंट के बाद यह बदलता है, इसलिए ऐप.कॉन्फिग मैं कॉपी कर रहा हूं प्री-ट्रांसफॉर्मेड वर्जन है।SlowCheetah पोस्ट-बिल्ड इवेंट

क्या किसी के पास कोई सुझाव है कि धीमी गति के बाद मैं अपनी प्रतिलिपि कैसे निष्पादित कर सकता हूं? क्या यह आवश्यक है कि मैं एक कस्टम बिल्ड कार्य लिखूं?

+0

मुझे एक कामकाज मिला। यह सुरुचिपूर्ण नहीं है, लेकिन यह काम करता है। मैंने एक डमी प्रोजेक्ट बनाया और प्रोजेक्ट के बाद बिल्ड-बिल्ड इवेंट्स बनाने के बाद इसे बनाने की निर्भरता निर्धारित की। मैंने पोस्ट-बिल्ड कॉपी इवेंट को मूल प्रोजेक्ट से इस नए डमी प्रोजेक्ट में ले जाया। यह काम करता है क्योंकि SlowCheetah ने यह काम किया है। – ScottC

उत्तर

4

यदि आप अपनी परियोजनाओं के निर्माण के लिए एमएसबिल्ड 4.0 का उपयोग कर रहे हैं - तो आप पहले के लक्ष्य के पहले slowTargets विशेषताओं के साथ slowcheetah लक्ष्य को हुक कर सकते हैं।

मैं जानता हूँ कि वास्तव में क्या नाम आप के बाद हुक करना चाहते हैं को लक्षित न लेकिन इस कोड को आप आधार अवधारणा है कि कैसे इस

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="Some_Target_Name" AfterTargets="TransformAllFiles" > 
      <Message Text="= Script here will run after SlowCheetah TransformAllFiles ="/> 
    </Target> 
<Project> 

संपादित करने के लिए दिया जा सकता था: मैं SlowCheetah स्थापित किया है और पाया है कि AfterTargets विशेषता "TransformAllFiles" होना चाहिए । बस अपने लक्ष्य निर्भरता की स्थापना AfterTargets="TransformAllFiles"

2

एलेक्सी का जवाब सही समाधान की ओर जाता है, लेकिन यहाँ यह पूर्ण में है:

  • राइट-क्लिक करें अपनी परियोजना और Unload Project
  • अब परियोजना पर राइट क्लिक करें और चयन नीचे करने के लिए Edit [your project name].csproj
  • स्क्रॉल का चयन करें और AfterBuild नामित लक्ष्य uncomment और इस विशेषता जोड़ने AfterTargets="TransformAllFiles"

एक उदाहरण::

<Target Name="AfterBuild" AfterTargets="TransformAllFiles"> 
<Exec Command="ECHO Hello PostBuild World!" /> 
</Target> 
0

मैं इस समस्या में भी टकरा गए हैं ... SlowCheetah के नवीनतम संस्करण में अपडेट करने का फैसला किया (वर्तमान 10 अपनी पोस्ट Exec आदेश का उपयोग कर इस लक्ष्य में कार्रवाई का निर्माण ले जाएँ 2.5.8), और यह समस्या तय हो गई है! ट्रांसफॉर्म किए गए एक्सएमएल के साथ एक परियोजना को तैनात करने के लिए पोस्ट-बिल्ड इवेंट्स का उपयोग करने में कोई और समस्या नहीं है!

NuGet पैकेज अपग्रेड प्रक्रिया के बाद, मुझे एक अजीब समस्या थी, हालांकि ... परिवर्तन अब नहीं हो रहे थे। परियोजना को संपादित करने जैसे नेयम सरफ्राज़ ने सुझाव दिया, मैंने पाया है कि SlowCheetah का PropertyGroup अनुभाग .csproj के अंत में रखा गया था।

यह अन्य संपत्ति समूह अनुभागों के पास, इसे शीर्ष पर ले जाने का मामला था, और अब यह एक आकर्षण की तरह काम करता है!

0

यदि आपको यहां प्रकाशित करने से पहले निर्माण के बाद अन्य .config फ़ाइलों (web.config के अलावा) को प्रतिलिपि/स्थानांतरित करने की आवश्यकता है, तो यह है कि यह विजुअल स्टूडियो 2013 के साथ कैसे किया जा सकता है (मैंने इसे पिछले संस्करणों पर परीक्षण नहीं किया था) । इस अनुभाग को .csproj फ़ाइल के अंत में बंद टैग </प्रोजेक्ट > से पहले जोड़ा जा सकता है और एमएसडी नियोजन प्रकाशन प्रक्रिया शुरू करने से ठीक पहले इसे निकाल दिया जाएगा।

<Target Name="MoveConfigFile" BeforeTargets="MSDeployPublish"> 
    <Move 
     SourceFiles="$(IntermediateOutputPath)Package\PackageTmp\ThirdPartyApp.config" 
     DestinationFolder="$(IntermediateOutputPath)Package\PackageTmp\bin" 
     OverwriteReadOnlyFiles="true" 
    /> 
</Target> 

कंपनी मैं खरीदा एक तीसरी पार्टी के उत्पाद काम करने के लिए बिन फ़ोल्डर अपने विधानसभा के साथ-साथ में एक .Config फ़ाइलों की जरूरत है कि के लिए काम करते हैं।

एक ही समय हम उत्पाद की .config फ़ाइल संसाधित करने और बिन फ़ोल्डर करने के लिए इसे परिवर्तनों के बाद स्थानांतरित करने के लिए सक्षम होना चाहिए पर।

$ (इंटरमीडिएटऑटपुटपैथ) पैकेज \ PackageTmp फ़ोल्डर में पूरा एप्लिकेशन शामिल है जिसे लक्ष्य सर्वर पर कॉपी किया जाएगा।