2012-10-18 40 views
6

काम करना बंद कर दिया है हम सफलतापूर्वक टीएफएस -2010 से एमएसडीओपी का उपयोग करके हमारी विकास वेबसाइट को दैनिक आधार पर अपडेट कर रहे हैं।.NET फ्रेमवर्क 4.5 के समाधान को अपग्रेड करने के बाद दैनिक तैनाती

यह तब तक ठीक काम कर रहा था जब तक हम वीएस2012 में अपग्रेड नहीं किया गया, हमारा आवेदन .NET Framework 4.0 से 4.5 और ASP.NET MVC से 3.0 से 4.0 तक। ऐसा लगता है कि सभी अच्छी तरह से और असेंबली तैनात हैं लेकिन वास्तव में कुछ भी तैनात नहीं किया गया है।

मैं इसे दो दिनों के लिए देख रहा हूं और यह नहीं समझ सकता कि यह क्यों हो रहा है और अब मैं विचारों से बाहर हूं।

नीचे मेरी बिल्ड स्क्रिप्ट का हिस्सा है जिस तरह से यह अपग्रेड से पहले काम कर रहा है।

<MSBuild 
       Projects="$(SolutionRoot)\My.Web\My.Web.csproj" 
       Properties="MvcBuildViews=False;AllowUntrustedCertificate=True;AuthType=Basic;Configuration=Dev;CreatePackageOnPublish=True;DeployIisAppPath=dev.myweb;DeployOnBuild=True;DeployTarget=MsDeployPublish;MSDeployPublishMethod=WMSvc;MsDeployServiceUrl=https://10.xxx.xxx.xxx:8172/MsDeploy.axd;UserName=UserName;Password=Password;UseMsdeployExe=True" 
       ContinueOnError="False" 
       /> 

अपग्रेड शुरू किया गया था और मेरी समस्या हम वेब तैनात 2.0 का उपयोग कर रहे थे, लेकिन अब हम वेब तैनात 3.0 में अपग्रेड किया है की खोज की। मैंने यह भी सुनिश्चित किया है कि हम ToolsVersion="4.0" के साथ निर्माण कर रहे हैं।

अद्यतन -

MSBuild.exe/p: AllowUntrustedCertificate = सच /p: AuthType = बेसिक /p: विन्यास = देव /p: CreatePackageOnPublish = सच /p: DeployIisAppPath = देव .myweb /p: DeployOnBuild = सच /p: DeployTarget = MsDeployPublish /p: MSDeployPublishMethod = WMSvc /p:MsDeployServiceUrl=https://10.xxx.xxx.xxx:8172/MsDeploy.axd /p: उपयोगकर्ता नाम = उपयोगकर्ता नाम /पी: पासवर्ड = पासवर्ड /p: UseMsdeployExe = सच ई: \ बनाता है \ 1 \ जो कुछ भी \ Daily_Build \ सूत्रों का कहना है \ My.Web \ My.Web.csproj

अब मैं भी हमारे TFS और कोई जवाब नहीं से ऊपर MSBuild आदेश भागने की कोशिश की जो मुझे पूरी तरह से निराश करता है। टीएफएस के इवेंट लॉग में कुछ भी नहीं, लॉग फ़ाइल में कुछ भी शब्दशः कोई फर्क नहीं पड़ता ... कोई विचार?

यह नीचे की तरह msdeploy निर्देश का उपयोग कर काम करता है;

<Exec Command="&quot;C:\Program Files\IIS\Microsoft Web Deploy V3\MSDeploy.exe&quot; -verb:sync -source:contentPath=&quot;E:\Builds\1\WhatEver\Daily_Build\Sources\My.Web\My.Web.csproj&quot; -dest:contentPath=&quot;E:\dev.my.web&quot;,computername=https://10.xxx.xxx.xxx:8172/MsDeploy.axd,username=UserName,password=Password,authtype=Basic -allowUntrusted=True" 
       ContinueOnError="false" /> 

-

अद्यतन 2 - ऐसा प्रतीत होता है माइक्रोसॉफ्ट परियोजनाओं है कि प्रकाशन योग्य परियोजनाओं और हमारी वेब आवेदन कर रहे हैं कि किस प्रकार, नहीं कर रहे हैं के बाद से आउटपुट प्रकार है के लिए एक जाँच जोड़ा कक्षा पुस्तकालय। यह v4.0 के साथ मान्य है लेकिन स्पष्ट रूप से v4.5 के लिए नहीं है।

किसी को भी यह पता है कि इसे फिर से कैसे करना है? क्या मुझे प्रोजेक्ट प्रकार बदलने की ज़रूरत है? प्रकाशन पैकेज को सामने बनाएं और फिर उसे तैनात करें? और क्या?

-

कोई और है कि एक ही समस्या थी गया है? क्या आपको साझा करने का समाधान मिला है?

MSBuild के संस्करण के साथ कोई समस्या हो सकती है?

+0

क्या आपके पास अपने बिल्ड लॉग में कोई त्रुटि संदेश है, या तैनाती बस चुपचाप नहीं हो रही है? –

+0

दुर्भाग्य से नहीं, यह बस चुपचाप नहीं हो रहा है। यह वास्तव में वास्तव में कुछ प्रकार की प्रतिक्रिया रखने में मदद करेगा। निर्माण फ़ाइल में कुछ भी वर्बोजिट डायग्नोस्टिक के साथ भी नहीं। – Per

+1

क्या msbuploy.exe' पर कॉल msbuild आउटपुट में दिखाई देता है? –

उत्तर

6

यहां मैं अनुशंसा करता हूं।वीएस2012 में हमने प्रकाशन वेब द्वारा प्रकाशित प्रकाशित प्रोफाइल का उपयोग करके अपनी वेब परियोजनाओं को प्रकाशित करना स्वचालित करना आसान बना दिया है। आपके मामले में एक नई MSDeploy प्रोफ़ाइल बनाएं। जब आप उस प्रोफ़ाइल को बनाते हैं तो हम सेटिंग \ PublishProfiles (या VB के लिए मेरी प्रोजेक्ट \ PublishProfiles) के अंतर्गत सेटिंग में सेटिंग्स को सहेज लेंगे। इस फ़ाइल का विस्तार .pubxml होगा। वे फ़ाइलें वास्तव में MSBuild फ़ाइलें हैं, जिन्हें आप आवश्यकतानुसार अनुकूलित कर सकते हैं। आप प्रकाशन संवाद का भी उपयोग जारी रख सकते हैं। पासवर्ड एक .user फ़ाइल में संग्रहीत किया जाएगा और एन्क्रिप्टेड ऐसा होगा कि केवल आप इसे डिक्रिप्ट कर सकते हैं।

आपके द्वारा प्रोफ़ाइल बनाने के बाद आप नीचे दिए गए आदेश के साथ प्रकाशित कर सकते हैं यदि आप .sln फ़ाइल बना रहे हैं।

msbuild mysoln.sln /p:DeployOnBuild=true /p:PublishProfile=<ProfileName> /p:Password=<Password> 

आप .csproj का निर्माण कर रहे हैं/.vbproj तो आप निम्नलिखित तरीके

msbuild mysoln.sln /p:DeployOnBuild=true /p:PublishProfile=<ProfileName> /p:Password=<Password> /p:VisualStudioVersion=11.0 

क्यों VisualStudioVersion http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx की आवश्यकता नहीं है के बारे में अधिक में यह थोड़ा बदलाव करने की जरूरत है।

एक बार ऐसा करने के बाद आप + प्रकाशित करने में सक्षम होंगे जैसा आपने पहले किया था। एफवाईआई हमने एज़ूर एसडीके https://www.windowsazure.com/en-us/develop/net/# में वीएस -2010 के लिए इन सभी नई वेब प्रकाशन सुविधाओं को भेज दिया है।

इसके अलावा आपके प्रश्न में मैंने देखा कि आप कुछ कस्टम गुणों जैसे MvcBuildViews निर्दिष्ट कर रहे हैं। यदि आप चाहें तो अब आप उन संपत्तियों को सीधे प्रकाशित प्रोफ़ाइल (.pubxml फ़ाइल) के अंदर रख सकते हैं। निस्संदेह आप उन्हें कमांड लाइन पर पास कर सकते हैं यदि यह आपके परिदृश्य के लिए अधिक समझ में आता है।

http://sedodream.com/2012/06/15/VisualStudio2010WebPublishUpdates.aspx पर इस पर अधिक जानकारी।

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

+0

धन्यवाद। मैंने पहले ही आपके ब्लॉग पोस्ट को sedodream :-) पर पढ़ा है। मुझे लगता है कि अगर मैं अपने मौजूदा ग्राहक पर किसी भी सर्वर पर तैनाती करने का अवसर मिला तो मैं पहले msdeploy प्रोफाइल के पथ पर चलता। दुर्भाग्यवश मुझे अपने पीसी से ऐसा करने के लिए अवरुद्ध कर दिया गया है और मेरे सभी प्रयासों को परीक्षण और त्रुटि के लिए हमारे टीएफएस से गुज़रने की जरूरत है और यह एक दर्द है जो एमएसबिल्ड और एमएसडीओपी के साथ काम कर रहा है। – Per

2

मुझे आज भी यही समस्या थी। मैं भी एक मशीन का उपयोग कर एक .NET 4.5 वेब एप्लिकेशन को स्वचालित रूप से तैनात करने की कोशिश कर रहा था जिसमें विजुअल स्टूडियो 2012 स्थापित नहीं था। मेरी स्थिति में कुछ मामूली मतभेद थे, हालांकि: मैं टीएफएस की बजाय टीमसिटी का उपयोग कर रहा था, और हमारा समाधान .NET 4.5 के साथ बनाया गया था, जिसे .NET 4.0 से अपग्रेड किया गया था।

फिर भी, मुझे एक ही समस्या का वर्णन किया गया था। मैं वेब ऐप बनाने और इसे आईआईएस में तैनात करने के लिए एमएसबिल्ड का उपयोग करता हूं, वैसे ही। इस दृष्टिकोण ने मेरी देव मशीन पर ठीक काम किया। हालांकि, जब मैंने सीआई सर्वर पर एमएसबिल्ड चलाया, तो उसने खुशी से वेब ऐप बनाया, लेकिन इसके बाद यह बंद हो गया: कोई त्रुटि नहीं, कोई चेतावनी नहीं, कुछ भी नहीं, सिर्फ एक संदेश है कि निर्माण सफल हुआ। आईआईएस में ऐप को तैनात करने के प्रयास की थोड़ी सी संकेत नहीं थी।

ऐसा लगता है कि एमएसबिल्ड वेब परिनियोजन करने के लिए प्रासंगिक लक्ष्य खो रहा था। फिक्स को मेरी देव मशीन से सीआई सर्वर पर C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web फ़ोल्डर की प्रतिलिपि बनाना था, इसे सीआई सर्वर पर उसी स्थान पर कॉपी करना क्योंकि यह मेरी मशीन पर था।

एक बार मैंने ऐसा करने के बाद, एमएसबिल्ड ने फिर वेब परिनियोजन 3.0 की आवश्यकता के बारे में चिल्लाया, लेकिन यह आसानी से तय किया गया था। सीआई सर्वर पर भी स्थापित करने के बाद, एमएसबिल्ड ने खुशी से वेब ऐप को तैनात किया।

+0

क्या इससे लाइसेंसिंग समस्या नहीं आती है? – leppie

+0

@leppie: मुझे निश्चित रूप से पता नहीं है लेकिन मैं कहने के लिए लुभाने वाला हूं। इन एमएसबिल्ड लक्ष्यों को पकड़ने के लिए आपको निश्चित रूप से पूर्ण VS2012 लाइसेंस की आवश्यकता नहीं है, क्योंकि वे वेब के लिए वीएस2012 एक्सप्रेस के हिस्से के रूप में स्थापित हैं। इसके अलावा, 'वेब' फ़ोल्डर एकमात्र फ़ोल्डर नहीं है जिसे मुझे सर्वर पर प्रतिलिपि बनाना था: एमएसबिल्ड' विजुअलस्टूडियो \ v11.0' फ़ोल्डर में 'वेब अनुप्रयोग' फ़ोल्डर के बिना सीआई सर्वर पर वेब ऐप को संकलित भी करेगा। –

0

Luke Woodward's answer का विस्तार करने के लिए:

मैं भी पाया गया है कि अपने स्थानीय मशीन से निर्माण सर्वर से C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\ तैनाती ठीक था।

हालांकि, असली फिक्स वीएस 2012 स्थापना के हिस्से के रूप में माइक्रोसॉफ्ट वेब डेवलपर टूल्स को स्थापित करना है, जो अन्य चीजों के साथ इस फ़ोल्डर को बनाएगा। यह आईपीपी के लाइसेंसिंग आपत्ति को संबोधित करता है।

मैं इस से ...

  1. हटाया जा रहा है C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\
  2. रनिंग वी.एस. 2012 संस्थापक और जोड़ने एमएस वेब देव उपकरण का परीक्षण किया।
  3. यह सत्यापित करने के बाद, C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\Web\ वापस आ गया था।