2013-05-31 10 views
6

मैं बाहरी बाइनरी (जैसे Moq, NUnit) और साझा कार्यक्षमता वाली आंतरिक लाइब्रेरी परियोजनाओं के लिए, हमारे सॉफ़्टवेयर देव प्रक्रिया में NuGet को शुरू करने की प्रक्रिया में हूं।परियोजना संदर्भ v NuGet निर्भरता

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

निम्नलिखित स्रोत कोड समाधान पर विचार करें:

  1. Company.Interfaces.sln बनाता Company.Interfaces.1.2.3.7654.nupkg
  2. Company.Common.sln अपने NuGet पैकेज के माध्यम से Company.Interfaces का संदर्भ होता है, और Company.Common.1.1.1.7655.nupkg बनाता है, Company.Interfaces.1.2.3.7654 निर्भरता के रूप में शामिल है।
  3. Company.DataAccess.sln कंपनी का उपयोग करता है। कंपनी जोड़ने के लिए कॉमन nupkg। इंटरफेस और कंपनी। संदर्भ के रूप में कॉमन। यह कंपनी.डाटाएप .1.0.8.7660.nupkg बनाता है, जिसमें कंपनी। कॉमन .1.1.1.7655 एक आश्रित घटक के रूप में शामिल है।
  4. कंपनी। उत्पाद.ए एक वेबसाइट समाधान है जिसमें सभी तीन लाइब्रेरी प्रोजेक्ट्स के संदर्भ शामिल हैं ( कंपनी का चयन करके जोड़ा गया। डेटाएप NuGet पैकेज)।

सवाल:

अगर वहाँ Company.Interfaces करने के लिए एक स्रोत कोड परिवर्तन है, मैं हमेशा फिर से अंकित करना और मध्यवर्ती पैकेज (Company.Common और Company.DataAccess) के पुनर्निर्माण और अद्यतन करने के लिए संकुल की जरूरत है कंपनी में। उत्पाद। ए?

या कि क्या स्रोत कोड परिवर्तन पर निर्भर करता है

  • बग समाधान, या
  • एक नई सुविधा, या
  • एक तोड़ने परिवर्तन किया गया?

असल में, मेरे पास निर्भर पुस्तकालय पैकेज के 8 स्तर हैं। पैकेज के पूरे पेड़ को अद्यतन करने के लिए टूलिंग समर्थन है, क्या यह आवश्यक होना चाहिए?

मुझे अर्थपूर्ण संस्करण के बारे में पता है।

हम वीएस2012, सी # 4.0, टीमसिटी 7.1.5 का उपयोग कर रहे हैं।

उत्तर

3

इसे जांचने के लिए प्रत्येक चेक-इन पर सबकुछ अपडेट करना एक अच्छा विचार है।

जो आप वर्णन कर रहे हैं वह आसानी से आर्टिफैक्ट निर्भरताओं (http://confluence.jetbrains.com/display/TCD7/Artifact+Dependencies) और "फिनिश बिल्ड" निर्माण ट्रिगर्स (या यहां तक ​​कि पूरी तरह से "नुजेट निर्भरता ट्रिगर") का उपयोग करके प्रबंधित किया जा सकता है।

1

हमने बेस प्रोजेक्ट पर अपनी खुद की बिल्ड कॉन्फ़िगरेशन लिखी है (कंपनी होगी। इंटरफेस।इस मामले में sln) जो एक ही समय में पूरे पेड़ को बनाता है और अपडेट करता है। यह अद्यतन पैकेज.config फ़ाइलों और रास्ते में .nuspec फ़ाइलों में जांचता है। मैं यह नहीं कह सकता कि यह हमारे लिए कितना समय बचा रहा है, भले ही यह शुरुआत में अधिक हो।

एक चीज देखने के लिए: स्क्रिप्ट हमने लिखे गए फाइलों में जांच की है, भले ही श्रृंखला हमारे बीच में विफल हो जाए, हमें स्थानीय मशीन पर इसे ठीक करने का मौका दें, फिक्स में जांचें और प्रकाशन को पुनरारंभ करें।

+1

क्या आपका ऐसा कुछ मतलब है? http://candordeveloper.com/2012/12/12/nuget-package-build-a-solution-of-projects/ –

+0

हमारी NuSpec फ़ाइलों को अभी भी हाथ से संपादित किया गया है, दुर्भाग्यवश, स्वचालित संस्करण प्रतिस्थापन के लिए कुछ मैक्रोज़ के साथ। मेरा मतलब है कि निर्भर बिल्ड कॉन्फ़िगरेशन को स्वचालित रूप से ट्रिगर करने के रूप में, NuGet पैकेज अपडेट करें, परिणामस्वरूप परिवर्तनों की जांच करें (आमतौर पर .csproj और packages.config फ़ाइलें) और पत्ती परियोजनाओं तक श्रृंखला जारी रखें। –

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