2014-04-28 5 views
8

मेरे पास वेब प्रोजेक्ट्स के समूह के साथ एक समाधान है और मैं चाहता हूं कि मेरा बिल्ड सर्वर प्रत्येक प्रोजेक्ट के लिए स्वचालित रूप से पैकेज तैयार करे। मैं काम कर रहा हूं (लगभग) सबकुछ प्राप्त करने में सक्षम हूं। बिल्ड ठीक हैं और प्रत्येक बिल्ड पर पैकेज बनाए जाएंगे। लेकिन केवल जब मैं MSBuild Arguments में PublishProfile निर्दिष्ट नहीं करता हूं। तो यह केवल डिफ़ॉल्ट मान डालेगा और मेरी वेब साइट्स को प्रीकंपाइल नहीं करेगा। (तर्क /p:DeployOnBuild=True /p:IsAutoBuild=True /p:VisualStudioVersion=12.0 हैं)टीएफएस बिल्ड सर्वर काम पर प्रकाशित प्रोफाइल नहीं प्राप्त कर सकता: "वैध AspnetCompilerPath नहीं मिला"

हालांकि मैं विजुअल स्टूडियो में प्रकाशित प्रकाशन प्रोफाइल (.pubxml) का उपयोग करना चाहता हूं। प्रत्येक प्रोजेक्ट में "test.pubxml" है। लेकिन जब मैं PublishProfile पैरामीटर निर्दिष्ट, निर्माण निम्न त्रुटि संदेश के साथ असफल हो जायेगी (तर्क /p:DeployOnBuild=True;PublishProfile=Test /p:IsAutoBuild=True /p:VisualStudioVersion=12.0 हैं):

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets (411): Can't find the valid AspnetCompilerPath

हाँ, फ़ाइल Microsoft.Web.Publishing.AspNetCompileMerge.targets उस फ़ोल्डर में मौजूद है। मैं अपनी डेवलपर मशीन पर विजुअल स्टूडियो से परियोजनाओं को ठीक से तैनात कर सकता हूं।

मैं उपयोग कर रहा हूँ निम्नलिखित: विंडोज सर्वर 2012 R2 विजुअल स्टूडियो 2013 अद्यतन 1 (बिल्ड सर्वर पर स्थापित) परियोजनाओं नेट 4.5.1

उत्तर

5

मैं एक ही त्रुटि हो रही थी और चारों ओर मिला लिए हैं यह एक हैक के साथ थोड़ा सा है।

मैंने माइक्रोसॉफ्ट.Web.Publishing.AspNetCompileMerge.targets फ़ाइल संपादित की।

में AspnetCompilerPath नोड का पता लगाएं और $ (Framework40Dir)साथ सी की जगह: \ Windows \ Microsoft.NET \ फ्रेमवर्क \ v4.0.30319

मुझे लगता है कि आप फ़ाइल में पहले $ (Framework40Dir) का मान सेट कर सकते हैं।

मैं इसे बदलने से पहले फ़ाइल का बैकअप बनाने की अनुशंसा करता हूं (फाइल को शीर्ष पर एक टिप्पणी भी है)।

मुझे लगता है कि उचित समाधान कुछ पर्यावरण चर या रजिस्ट्री मान सेट करना होगा।

+0

यह काम करता है! (स्पष्ट रूप से $ (Framework40Dir) .NET ढांचे के बजाय msbuild निर्देशिका में सेट किया गया था)। –

12

मैं एक ही समस्या थी, इस सवाल का पाया, और एक थोड़ा कम hacky समाधान के साथ आया था:

बस एक अतिरिक्त MSBuild पैरामीटर के रूप में /P:Framework40Dir=c:\windows\microsoft.net\framework\v4.0.30319 जोड़ें।

किसी लक्ष्य को संपादित करने या किसी अन्य चीज़ को सेट करने की आवश्यकता नहीं है। मेरे लिए काम किया, तो मैं बस कार्य करें:

msbuild MyWebProject.csproj /T:Package /P:PublishProfile=MyProfile /P:Framework40Dir=(as above) 

मैं इसका इस्तेमाल मेरे चुने गए सबफ़ोल्डर में एक वेब तैनाती पैकेज का निर्माण करने के लिए - प्रोफ़ाइल के बिना, यह obj/debug/package को जाता है। obj का उपयोग कौन करता है? ब्लेग :)

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