2012-08-01 11 views
5

मैं here वर्णित वेब.कॉन्फिग ट्रांसफॉर्मेशन प्राप्त करने का प्रयास कर रहा हूं। हमने इस परियोजना का इस्तेमाल अन्य परियोजनाओं पर किया है और यह बिना किसी मुद्दे के काम करता है, लेकिन इस नई परियोजना पर नहीं।web.tconfig web.template.xml से बदल नहीं रहा

यहाँ मैं सफलता

  • मामले में wpp.targets फ़ाइल का नाम बदलने मैं इस परियोजना का नाम गलत बिना परीक्षण की कोशिश की है है। मैं वर्तमान में जानता हूं कि मैं काम का उपयोग कर रहा हूं क्योंकि यह केवल एकमात्र ऐसा है जो web.tconfig को web.template.xml से पुनर्निर्मित करने का कारण बनता है। केवल उप टेम्पलेट काम नहीं करते हैं।
  • xdt साथ की कोशिश की: लोकेटर = "मैच (नाम)"
  • की कोशिश की .config विस्तार .xml बनाम, हमारे अन्य परियोजनाओं जहां इस काम करता है उपयोग .xml
  • विन्यास प्रबंधक के लिए "टेस्ट" विन्यास का उपयोग करने के लिए निर्धारित है जिस परियोजना पर मैं काम कर रहा हूं।
  • web.template.Test.xml xdt गया है: रूपांतरण = अनुभाग मैं
  • web.template.xml प्लेसहोल्डर wpp.targets से "CopyWebTemplateConfig" खंड को हटाने
  • की कोशिश की है बदलना चाहते हैं के लिए "बदलें" जैसा कि नीचे जुड़े स्टैक प्रश्न पर सुझाव दिया गया है। हमारी अन्य परियोजनाओं में यह है और "प्रॉपर्टी ग्रुप" सेक्शन ने टिप्पणी की और मैंने दोनों संयोजनों की कोशिश की है।

मैंने उपरोक्त लिंक को कई बार पढ़ा है और यह संबंधित स्टैक question है, लेकिन यह नहीं देख सकता कि समस्या क्या है।

नोट प्रकाशन परिवर्तन एक तरह से काम करता है। यह एक web.template.xml फ़ाइल बनाता है जिसमें web.template.Test.xml के मान शामिल हैं, लेकिन wpp.targets निर्देशों के रूप में web.config.xml नहीं बनाते हैं। तो ऐसा लगता है कि बिल्डिंग ट्रांसफॉर्म काम करने के साथ यह एक मुद्दा है।

किसी को भी क्या पता है कि इसका क्या विचार है?

wpp.targets

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 

    <!-- Make sure web.config will be there even for package/publish --> 
    <Target Name="CopyWebTemplateConfig" BeforeTargets="Build"> 
    <Copy SourceFiles="web.template.xml" 
      DestinationFiles="web.config"/> 
    </Target> 

    <PropertyGroup> 
    <PrepareForRunDependsOn> 
     $(PrepareForRunDependsOn); 
     UpdateWebConfigBeforeRun; 
    </PrepareForRunDependsOn> 
    </PropertyGroup> 

    <!-- This target will run right before you run your app in Visual Studio --> 
    <Target Name="UpdateWebConfigBeforeRun"> 
    <Message Text="Configuration: $(Configuration): Web.template.$(Configuration).xml"/> 
    <TransformXml Source="web.template.xml" 
       Transform="web.template.$(Configuration).xml" 
       Destination="web.config" /> 
    </Target> 

    <!-- Exclude the config template files from the created package --> 
    <Target Name="ExcludeCustomConfigTransformFiles" BeforeTargets="ExcludeFilesFromPackage"> 
    <ItemGroup> 
     <ExcludeFromPackageFiles Include="web.template.xml;web.template.*.xml"/> 
    </ItemGroup> 
    <Message Text="ExcludeFromPackageFiles: @(ExcludeFromPackageFiles)" Importance="high"/> 
    </Target> 
</Project> 

web.template.xml

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=152368 
    --> 
<configuration> 
    <configSections>   
    <sectionGroup name="TestSettings"></sectionGroup> 
    .... 
    </configSections> 
    .... 
    <TestSettings> 
    </TestSettings> 
    .... 
</configuration> 

web.template.Test.xml

<?xml version="1.0"?> 
<!-- For more information on using transformations 
    see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. --> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <TestSettings xdt:Transform="Replace"> 
    ... 
    </TestSettings> 
</configuration> 

MSBuild उत्पादन

Target "UpdateWebConfigBeforeRun: (TargetId:143)" in file "C:\...\Project.wpp.targets" from project "C:\...\Project.csproj" (target "PrepareForRun" depends on it): 
Task "Message" (TaskId:93) 
    Configuration: Test: Web.template.Test.xml (TaskId:93) 
Done executing task "Message". (TaskId:93) 
Task "TransformXml" (TaskId:94) 
    Transforming Source File: Web.template.xml (TaskId:94) 
    Applying Transform File: Web.template.Test.xml (TaskId:94) 
    Executing Replace (transform line 5, 18) (TaskId:94) 
     on /configuration/TestSettings (TaskId:94) 
     Applying to 'TestSettings' element (source line 121, 4) (TaskId:94) 
     Replaced 'TestSettings' element (TaskId:94) 
    Done executing Replace (TaskId:94) 
    Output File: web.config (TaskId:94) 
    Transformation succeeded (TaskId:94) 
Done executing task "TransformXml". (TaskId:94) 
Done building target "UpdateWebConfigBeforeRun" in project "Project.csproj".: (TargetId:143) 
+0

क्या आप मुझे एक नमूना परियोजना भेज सकते हैं जो काम नहीं कर रहा है? मेरा ईमेल कहता है [at] {MicrosoftDOTcom}। –

उत्तर

1

मैं अपने समस्या का समाधान मिल गया है, लेकिन नहीं जानते कि क्या कारण है, तो यकीन है कि अगर यह अन्य मामलों में यह समाधान होगा नहीं है।

मैं MSBuild निदान के उत्पादन की समीक्षा में पाया कि अंत में web.tconfig पर web.template की प्रतिलिपि बनाई गई एक और अनुभाग था। ध्यान दें कि यह UpdateW के बाद है ebConfigBeforeRun लक्ष्य पहले से ही चलाया गया है और उप टेम्पलेट ट्रांसफॉर्म फ़ाइल से web.config में अपने अपडेट किए हैं। ऐसा लगता है कि यह आखिरी कदम वेब.कॉन्फिग को ट्रांसफॉर्म के साथ ओवरराइड कर रहा था।

मुझे यकीन नहीं था कि कॉपी निर्देश का यह अंतिम सेट कहां से आ रहा था, इसलिए मैंने अपने पीसी पर अन्य फ़ाइलों को अन्य wpp.target फ़ाइलों की तलाश में खोज की। मैंने धीमे चीता के एक्सटेंशन फ़ोल्डर में एक और पाया और कुछ अनुभाग ऊपर ऊपर देखा जो एक संपत्ति "transformOnBuild" को झूठी में स्थापित कर रहा था।

सोच रहा है कि स्लोचेटा के साथ कोई संघर्ष था, मैंने इसे अनइंस्टॉल किया और परिवर्तनों ने अपेक्षा के अनुसार काम करना शुरू कर दिया। SlowCheetah सक्षम के साथ अन्य समाधान काम करने के बाद से यह अभी भी थोड़ा अजीब था। एक whim पर मैंने SlowCheetah फिर से स्थापित किया और परिवर्तन की उम्मीद के रूप में काम जारी रखा।

तो मेरा समाधान धीमी चित्ताह की पुन: स्थापना होने के समाप्त हो गया। मैं अभी भी उलझन में हूं कि इस मुद्दे का क्या कारण था, इसलिए यदि कोई और इसका उत्तर पोस्ट करता है तो मैं उन्हें बक्षीस दूंगा।

0

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

चेक इस मुद्दे के अंतिम टिप्पणी में कदम: Custom solution configuration not showing up in Visual Studio 2010

+0

यद्यपि समाधान में एक नई परियोजना नहीं जोड़ा गया था। जब मैंने कहा कि परिवर्तन अन्य परियोजनाओं पर काम करता है, तो मेरा मतलब है कि हमने अन्य समाधान या अन्य प्रणालियों का निर्माण किया है। मैंने उस उत्तर में उल्लिखित चरणों की कोशिश की, लेकिन इस मुद्दे को हल नहीं किया। – Jerry

0

"मैं वर्तमान एक मैं काम करता है का उपयोग कर रहा है, क्योंकि यह केवल एक ही है कि वेब का कारण बनता है पता।web.template.xml से पुनर्निर्मित करने के लिए कॉन्फ़िगर इस ट्रांसफॉर्म काम करता है। केवल उप टेम्पलेट्स काम नहीं है। "

इसका मतलब, परिवर्तन काम करता है लेकिन TestSettings अनुभाग अकेले तब्दील नहीं हो रहा है?

आप शब्दाडंबर नैदानिक ​​/ विस्तृत करने के लिए सेट के साथ MSBuild के साथ उत्पादन का निर्माण बता सकते हैं?

+0

यह सही है, कार्यों को बदलता है लेकिन टेस्टसेटिंग अनुभाग उप टेम्पलेट्स रूपांतरित नहीं होता है। आप निर्माण पर वर्बसिटी कैसे सक्षम करते हैं? – Jerry

+0

ठीक है कि डायग्नोस्टिक वर्बोजिटी को कैसे सक्षम किया जाए, लेकिन मुझे नहीं लगता कि मैं आउटपुट को सार्वजनिक रूप से साझा कर सकता हूं। क्या कोई अनुभाग है जिसे मुझे विशेष रूप से देखना चाहिए? वीएस 2010 विकल्प => प्रोजेक्ट्स और सॉल्यूशंस => बिल्ड और रन => एमएसबिल्ड परियोजना के लिए ड्रॉपडाउन आउटपुट वर्बोजिटी का निर्माण। – Jerry

+0

मुझे उस आउटपुट में web.template.xml गुण मिले जो "ट्रांसफॉर्मऑनबिल्ड" को सही पर सेट किया गया, लेकिन अन्य सभी फाइलों ने इसे झूठा दिखाया है। – Jerry

3

मैंने StyleCop स्थापित किया था और यह मेरे लिए ओवरराइट कर रहा था।

इसलिए मैंने इसे अनइंस्टॉल कर दिया और समस्या हल हो गई।

मजेदार यह है कि मैंने StyleCop को फिर से स्थापित किया और रूपांतरण अभी भी काम कर रहा था!

कुछ बिंदुओं पर मैंने देखा कि मुझे CopyWebTemplateConfig लक्ष्य अनुभाग को भी हटा देना चाहिए।

+1

मेरे द्वारा उल्लिखित परिदृश्य के समान लगता है, बस SlowCheetah के साथ StyleCop को प्रतिस्थापित करें। – Jerry

+1

हां। अच्छी खबर यह है कि वे F5 पर SlowCheetah पर वेब के समर्थन पर विचार कर रहे हैं। https://github.com/sayedihashimi/slow-cheetah/issues/39 कृपया सभी को वोट दें! – user1858286

0

मैंने इस विषय के बारे में एक ब्लॉग पोस्ट लिखा था। मैं इसे अपने वेब एप्लिकेशन में हर रोज इस्तेमाल करता हूं। मैंने ब्लॉग पोस्ट लिखा क्योंकि धीमी गति में सुविधा अभी तक तैयार नहीं है। http://www.locktar.nl/general/use-config-transforms-when-debugging-your-web-application/

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