2011-04-22 14 views
6

समस्या: मैं सुंदरता से एमएनसी वेबसाइट एनएएनटी के साथ प्रकाशित करना चाहता हूं।NAnt एमवीसी प्रकाशित वेबसाइट

सरल नहीं? गलत ... यहां कुछ स्टैक ओवरफ्लो संसाधन हैं जिन्हें मैंने देखा है। उनमें से हर एक एक मुद्दा है ...

Stackoverflow 1: Publish WebApplication using NAnt

इस एक का परिणाम है कि web.config तब्दील किया जा रहा नहीं कर रहा था और अतिरिक्त फ़ाइलें बिन में प्रदर्शित कर रहे थे कि सभी चीजों की entity.dll.config पसंद नहीं है!

Stackoverflow 2: Replicate VS2008 "Publish Web Site" from command line

यह एक को छोड़कर यह और भी बदतर है ... यह मेरी परियोजना से सब कुछ कॉपी और प्रकाशित फ़ोल्डर में डंप हो जाएगा पिछले समाधान के रूप में भी ऐसा ही होगा ... नहीं मज़ाक!

Stackoverflow 3: MSBuild Script and VS2010 publish apply Web.config Transform

स्वीकार कर लिया समाधान Stackoverflow 1 की चोटी पर बनाता है, लेकिन शुद्ध MSBuild एक्सएमएल और नहीं NAnt एक्सएमएल है। यह केवल वेब कॉन्फिग को ठीक करता है और फिर भी उन यादृच्छिक फ़ाइलों को दिखाता है जो दिखाते हैं। एक और समाधान (स्वीकार नहीं किया गया) है जो पैटर्सनक देता है, जो कि बहुत ही सही है, लेकिन वेब.कॉन्फिग में कनेक्शन स्ट्रिंग्स एक फर्जी लिंबो स्टेटस में हैं, जो आपको एक और खराब वेब.कॉन्फिग

कहने की जरूरत नहीं है कि यह 3-4 दिन, 10+ अलग स्टैक ओवर फ्लो उत्तर और कोई रजत बुलेट नहीं है ... क्या कोई आसान समाधान नहीं है? क्या मुझे कुछ कार्डिनल पाप करना चाहिए और सही प्रकाशित परिणामों को प्राप्त करने के लिए कुछ भयानक गड़बड़ एनएएनटी स्क्रिप्ट बनाना चाहिए जो वीएस -2010 इतनी अच्छी तरह से वितरित करता है?

उत्तर

6

ठीक है, मैं इस ब्लॉग पर chancing के बाद यह पता लगा, http://blogs.msdn.com/b/webdevtools/archive/2009/05/04/web-deployment-web-config-transformation.aspx

चरण 4 में वह एक कमांड लाइन आर्ग मैंने पहले नहीं देखा है पता चलता है, /टी: TransformWebConfig

दुर्भाग्य से, यह अकेले समस्या का समाधान नहीं करता है। यह ट्रांसफॉर्म करता है लेकिन ट्रांसफॉर्म ओबीजे/रिलीज/ट्रांसफॉर्म वेबकॉन्फिग/ट्रांसफॉर्म/वेब.कॉन्फिग (ओबीजे/रिलीज या ओबीजे/डीबग या ओबीजे/आपकाट्रानफॉर्मनाम) में पाया जाता है।

तो अंततः एक सभ्य समाधान प्राप्त करने के लिए मुझे यही करना था।

<exec program="${exec.msbuild}" failonerror="true"> 
    <arg value="${path.sourceCode}/ProjectFolder/Project.csproj" /> 
    <arg value="/p:Configuration=Release" /> 
    <arg value="/t:ResolveReferences" /> 
    <arg value="/t:_CopyWebApplication" /> 
    <arg value="/t:TransformWebConfig" /> 
    <arg value="/p:OutDir=${path.buildFromProject}/temp/" /> 
    <arg value="/p:WebProjectOutputDir=${path.buildFromProject}/ProjectBuild/" /> 
</exec> 

<delete dir="${path.build}/temp" failonerror="true"/> 
<delete file="${path.build}/ProjectBuild/Web.config" failonerror="true"/> 
<delete file="${path.build}/ProjectBuild/Web.Debug.config" failonerror="true"/> 
<delete file="${path.build}/ProjectBuild/Web.Release.config" failonerror="true"/> 
<copy file="${path.sourceCode}/ProjectFolder/obj/Release/TransformWebConfig/transformed/Web.config" tofile="${path.build}/ProjectBuild/Web.config" /> 

ध्यान दें कि आउटडियर WebProjectOutputDir जैसा नहीं है।

  • OutDir आप परियोजना "समाधान" में सब कुछ देता है: यही वजह है कि है।
  • वेबप्रोजेक्टऑटपुटडियर आपको वेब "प्रोजेक्ट" (यानी संपूर्ण समाधान नहीं) के लिए न्यूनतम न्यूनतम देता है।

आउटडिर का उपयोग करके समाधान में अन्य परियोजनाओं से बहुत अधिक सामान आ रहा था जिसे हम नहीं चाहते थे इसलिए हमने आउटडो को एक अस्थायी फ़ोल्डर में भेज दिया और हटा दिया जैसा कि आप ऊपर दिए गए चरणों में देख सकते हैं। आउटडीर बिल्कुल वैसे ही आवश्यक है। यदि आप इसे हटाते हैं तो बिल्ड काम नहीं करेगा। ऐसा लगता है कि WebProjectOutputDir आउटडियर से काम करता है।

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

यदि किसी को कभी भी एमएसबिल्ड के साथ एक चरण समाधान मिल जाए तो कृपया इसे पोस्ट करें: पी हालांकि यह एक अच्छा समाधान है, हालांकि यह अभी भी 99.9 999% सही है और ऊपर सूचीबद्ध लोगों की तरह मुझे यकीन है कि वहां होने वाला है कुछ कम बारीकियों या कदम चूक गए।

3

अपने समाधान बाहर की जाँच के बाद मैं एक और समाधान https://stackoverflow.com/a/2953376/662853

मैं बजाय _WPPCopyWebApplication लक्ष्य का उपयोग करने के अपने जवाब संशोधित भर में ठोकर खाई:

<exec program="${exec.msbuild}" failonerror="true"> 
    <arg value="${path.sourceCode}/ProjectFolder/Project.csproj" /> 
    <arg value="/p:Configuration=Release" /> 
    <arg value="/t:ResolveReferences" /> 
    <arg value="/t:_WPPCopyWebApplication" /> 
    <arg value="/t:TransformWebConfig" /> 
    <arg value="/p:OutDir=${path.buildFromProject}/temp/" /> 
    <arg value="/p:WebProjectOutputDir=${path.buildFromProject}/ProjectBuild/" /> 
</exec> 

मैं अब कॉन्फ़िगरेशन हटा सकते हैं और नकल करने के लिए आवश्यक परीक्षण के बाद रूपांतरित फाइलें

+0

वाह इसके लिए धन्यवाद! मैं यह देखने के लिए जांच करूँगा कि यह मेरी समस्या को हल करता है और अगर यह करता है तो आपका समाधान जवाब के रूप में ले जाएगा। धीरज रखो, मेरे पास लगभग एक हजार चीजें हैं जो शायद 3 सप्ताह में प्राप्त होंगी: पी – Thirlan

+0

यह मेरे लिए बहुत अच्छा काम करता है – AaronHS