8

मैं अपने Web.config फ़ाइलMSBuild बदलना एक config कई बार

<Target Name="UpdateWebConfigForProjectsBeforeRun"> 
    <ItemGroup> 
     <FilesToTransofm Include="ProjectsDeployBin\Web.*.$(Configuration).config"/>  
    </ItemGroup>  
    <Message Text="Transform file: %(FilesToTransofm.Identity)" /> 
    <TransformXml Source="web.config" 
        Transform="%(FilesToTransofm.Identity)" 
        Destination="web.config" /> 
    </Target> 

में अगले config है मुझे क्या करना कोशिश कर रहा हूँ क्या इसकी ProjectsDeployBin निर्देशिका से सभी कॉन्फ़िगरेशन हो और मुख्य web.config प्रत्येक फ़ाइल लागू होते हैं।

एमएसबिल्ड द्वारा लॉक किए गए पहले रूपांतरण मुख्य वेब.कॉन्फिग के बाद।

तो मैं इस मुद्दे को कैसे ठीक कर सकता हूं? फाइलों के संग्रह से मेरे web.config को बदलने का कोई और तरीका है? धन्यवाद।

उत्तर

8

जैसा कि आपने देखा है, विजुअल स्टूडियो 2010 के साथ भेजे गए ट्रांसफॉर्मएक्सएल कार्य में एक बग है जो स्रोत फ़ाइल को लॉक करता है।

इसके आसपास काम करने के लिए, आप प्रत्येक रूपांतरण से पहले अपनी स्रोत फ़ाइल की एक अस्थायी प्रति बना सकते हैं। चूंकि आप प्रत्येक ट्रांसफॉर्म फ़ाइल (कॉपी और ट्रांसफॉर्म) के लिए कई कार्यों को निष्पादित करेंगे, इसलिए आपको Task Batching के बजाय Target Batching पर स्विच करना होगा।

उदाहरण:

<ItemGroup> 
    <FilesToTransofm Include="ProjectsDeployBin\Web.*.$(Configuration).config"/>  
</ItemGroup> 

<Target Name="UpdateWebConfigForProjectsBeforeRun" 
     Inputs="@(FilesToTransofm)" 
     Outputs="%(Identity).AlwaysRun"> 
    <Message Text="Transform file: %(FilesToTransofm.Identity)" /> 
    <Copy SourceFiles="web.config" 
     DestinationFiles="web.pre-%(FilesToTransofm.Filename).temp.config" /> 
    <TransformXml Source="web.pre-%(FilesToTransofm.Filename).temp.config" 
       Transform="%(FilesToTransofm.Identity)" 
       Destination="web.config" /> 
</Target> 

एक त्वरित परीक्षण से, यह इस बग की तरह दृश्य स्टूडियो 2012 में तय हो गई है लगता है, लेकिन मैं एक संदर्भ/स्रोत है कि दस्तावेजों ढूँढने में सक्षम नहीं हूँ, और original Connect bug अब और देखने योग्य नहीं है।