34

मैं वेब.कॉन्फिग ट्रांसफॉर्मेशन स्थानीय रूप से काम करना चाहता हूं लेकिन स्पष्ट रूप से परिवर्तन केवल तैनाती करते समय होते हैं।वेब.कॉन्फिग ट्रांसफॉर्मेशन स्थानीय रूप से काम करें

किसी को भी एक तरह से बिना यह "पुनर्निर्माण" प्रक्रिया से गुजर रही MSBuild लक्ष्य "TransformWebConfig" चलाने के लिए पता है और यह भी निर्दिष्ट और आउटपुट निर्देशिका जहां तब्दील web.config थूक से बाहर करने के लिए?

संपादित: सईद के जवाब का उपयोग करना, मैं मेरे लिए काम चलाने करने के लिए एक .bat फ़ाइल बनाई:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Msbuild.exe "D:\Demo\Transformation.proj" /t:TransformWebConfig 

copy /Y "D:\Demo\Web.config" "D:\MyProject\Web.config" 

del ""D:\Demo\Web.config" 

"Transformation.proj" नीचे जवाब में सईद के कोड स्निपेट की एक प्रति है। परिवर्तन के लिए बस स्रोत, लक्ष्य और गंतव्य निर्दिष्ट करें। नई फ़ाइल, इस मामले में, परिवर्तित "web.config" "डी: \ डेमो" निर्देशिका में होगी। मैं बस इसे अपने प्रोजेक्ट के web.config को ओवरराइट करने के लिए कॉपी कर रहा हूं और अंत में, "डेमो" फ़ोल्डर में जेनरेट की गई फ़ाइल को हटा रहा हूं।

इसके अलावा, मैं बनाया इस बैच फ़ाइल को चलाने के लिए और मेरे लिए tranformation प्रदर्शन एक मैक्रो:

Public Module DoTransform 
    Sub RunTransformBatchFile() 
     Try 
      Process.Start("D:\Demo\RunTransform.bat") 
     Catch ex As System.Exception 
      MsgBox(ex.Message) 
     End Try 
    End Sub 
End Module 

आप भी इस बैच चलाने के लिए अपने उपकरण पट्टी पर एक बटन जोड़ सकते हैं और/या के लिए एक शॉर्टकट कुंजी असाइन निष्पादित।

उत्तर

34

यदि आप वेब प्रकाशन पाइपलाइन का उपयोग कर तो आप मैन्युअल रूप से TransformXml कार्य का उपयोग किए बिना एक कॉन्फ़िग फ़ाइल को बदलने के लिए चाहते हैं। मैं http://sedodream.com/2010/04/26/ConfigTransformationsOutsideOfWebAppBuilds.aspx में इस पर एक विस्तृत ब्लॉग पोस्ट में लिखा है, लेकिन यहां उच्च रोशनी:

<Project ToolsVersion="4.0" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <UsingTask TaskName="TransformXml" 
      AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/> 

    <Target Name="Demo"> 
     <TransformXml Source="app.config" 
         Transform="Transform.xml" 
         Destination="app.prod.config"/> 
    </Target> 
</Project> 

यहाँ मैं मैन्युअल transform.xml फ़ाइल का उपयोग app.config फ़ाइल को बदलने और गंतव्य फ़ाइल app.prod है। config।

एक बात है कि आप का उल्लेख स्थानीय स्तर पर परिवर्तन करने में सक्षम किया जा रहा है जब एप्लिकेशन चल रहा था। पैकेज और प्रकाशन पर केवल परिवर्तन करने का कारण यह है कि अगर हमने web.config को स्वयं बदल दिया है तो अगली बार जब आप अपना ऐप डीबग करेंगे तो web.config फिर से बदल जाएगा। तो उदाहरण के लिए यदि आपके web.debug.config में आपके पास कॉन्फ़िगरेशन के लिए एक मूल्य जोड़ने के लिए रूपांतरण है, तो पहली बार ठीक है जब आप इसे जोड़ते हैं, लेकिन अगली बार जब आप अपना ऐप चलाते/डीबग करते हैं तो इसे फिर से जोड़ा जाएगा। तो इससे बचने के लिए सबसे अच्छा है।

+0

यह मैं, वास्तव में क्या जरूरत के निर्माण के बिना web.config बदलना है। बहुत बहुत धन्यवाद! –

+0

कहा, क्या आपको इस दूसरे प्रश्न के उत्तर को जानना होगा? http://stackoverflow.com/questions/2915329/advanced-tasks-using-web-config-transformation –

+0

हाँ मुझे यह पता चल जाता है कि, मैंने अभी इसका जवाब दिया है। –

2

यदि आप विजुअल स्टूडियो 2015 का उपयोग कर रहे हैं, तो आप वांछित वातावरण के परिवर्तन पर राइट क्लिक कर सकते हैं और "पूर्वावलोकन देखें" पर क्लिक कर सकते हैं ... फिर यह ट्रांसफॉर्म उत्पन्न करेगा, और आप इसे कॉपी और पेस्ट कर सकते हैं डिबगिंग उद्देश्यों के लिए सामान्य Web.config फ़ाइल। बस इसे मत करो!

आप विजुअल स्टूडियो 2013 का उपयोग कर रहे हैं, तो आप SlowCheetah स्थापित कर सकते हैं - एक्सएमएल बदल विस्तार

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