2012-12-05 10 views
8

के दौरान ऑटोस्पेक फ़ाइल को स्वत: अद्यतन करें, मैं NuGet पैकेज निर्माण प्रक्रिया को स्वचालित करने और पैकेज को NuGet रिपॉजिटरी में अपलोड करने के लिए बिल्ड परिभाषा बनाने के लिए NuGetter का उपयोग करने में सक्षम हूं।बिल्ड प्रक्रिया

लेकिन, मैं प्रक्रिया को और भी स्वचालित करना चाहता हूं। पीछा कर रहा है चरणों की सूची मैं निर्माण प्रक्रिया के हिस्से के रूप स्वचालित करने के लिए करना चाहते हैं:

  • निर्माण प्रक्रिया nuspec फ़ाइल का निर्माण करने में सक्षम होना चाहिए, बजाय मुझे मैन्युअल इस फाइल बनाने और स्रोत में सहेजने इसे लेने के लिए निर्माण प्रक्रिया के लिए नियंत्रण भंडार।
  • बिल्ड प्रक्रिया nuspec फ़ील्ड को प्रतिस्थापित करने में सक्षम होना चाहिए।

nuspec क्षेत्रों है कि मैं वास्तव में स्वचालित करने के लिए सक्षम होना चाहते हैं कर रहे हैं:

लेखक मैं निर्माण प्रक्रिया की तरह व्यक्ति है जो के नाम के साथ nuspec फ़ाइल में इस क्षेत्र को बदलने के लिए होगा कोड में चेक-इन करें।

रिलीज नोट्स मैं इस क्षेत्र को चेक-इन टिप्पणी के साथ nuspec फ़ाइल में बदलने के लिए निर्माण प्रक्रिया को चाहूंगा।

क्या कोई इसे पूरा करने में सक्षम है? यदि हां, तो आप इसे स्वचालित करने के बारे में कैसे गए?

उत्तर

0

यहाँ How to avoid xml document generation when using nuget pack इस पोस्ट कुछ विचार

<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/licenseUrl" Value="http://someurl" />   
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/projectUrl" Value="http://someurl" />   
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/iconUrl" Value="http://somenice.png" />    
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/tags" Value="My.Assembly" />   
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/releaseNotes" Value="Review readme.txt for details." /> 
+0

यह पोस्ट मेरे प्रश्न का उत्तर नहीं देता है। मैं PowerShell स्क्रिप्ट का उपयोग कर निर्माण प्रक्रिया के दौरान, सही सामग्री फ़ाइलों के साथ, NuGet पैकेज बनाने में सक्षम हूं, जो पूरी तरह से काम करता है। मैं NuGet पैकेज से फ़ाइल को शामिल/बहिष्कृत करने की कोशिश नहीं कर रहा हूं।मेरी समस्या यह है कि, मैं निर्माण प्रक्रिया के दौरान nuspec फ़ाइल उत्पन्न करना चाहता हूं। तो, मैं पहले nupsec फ़ाइल को चेक-आउट करना चाहता हूं, दूसरा लेखक और रिलीज नोट्स के लिए nuspec फ़ाइल फ़ील्ड्स को अपडेट करें, तीसरे चेक-इन nuspec फ़ाइल में। NuGetter nuspec फ़ाइल को पुनर्प्राप्त करने से पहले ये तीन चरणों का होना चाहिए। –

4

यह मदद मिल सकती है है।

मैंने ओपन सोर्स प्रोजेक्ट के लिए अपडेट प्रकाशित करने के लिए एक स्वचालित प्रक्रिया बनाई है।

https://github.com/DefinitelyTyped/NugetAutomation

आप के लिए ब्याज की कुछ बातें संभवतः कर रहे हैं।

  • हम 'टेम्पलेट' nuspec की प्रतिलिपि बनाने के लिए शक्तियों का उपयोग कैसे करते हैं और हमें आवश्यक फ़ील्ड इंजेक्ट करते हैं। (आप इसका उपयोग 'लेखकों, रिलीज नोट्स' फ़ील्ड को समान रूप से प्रतिस्थापित करने के लिए कर सकते हैं)
  • वर्तमान संस्करण प्राप्त करने और संस्करण को बढ़ाने के लिए सार्वजनिक न्यूज सर्वर को पिंग करें।

इसे कुछ पावरहेल ज्ञान की आवश्यकता है, लेकिन मुझे आशा है कि यह आपको एक शुरुआत देगा।

+0

आपकी स्क्रिप्ट साझा करने के लिए धन्यवाद –

0

आप एक नया पोस्ट बिल्ड इवेंट जोड़ सकते हैं जो एक स्क्रिप्ट को ट्रिगर करता है जो "packages.config" फ़ाइल से संस्करण ले रहा है और उन्हें वापस nuspec फ़ाइल में लिखता है।

C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -ExecutionPolicy Unrestricted -Command .'$(ProjectDir)..\PathToScirptLocation\NuspecAutoUpdate.ps1' -NuspecPath '$(ProjectDir)API.nuspec' -PackagesConfigPath '$(ProjectDir)packages.config' 

मैं अपनी जीआईटी को स्क्रिप्ट और पोस्ट बिल्ड इवेंट अपलोड करता हूं, जिसकी आवश्यकता होगी।

https://github.com/avrum/NuspecAutoUpdate

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