2015-01-16 6 views
8

मैं एकाधिक निर्भरताओं के साथ एक csproj में एक पैकेज को अद्यतन करने का प्रयास कर रहा हूं। जो है, packages.config फ़ाइल इस तरह दिखता है:मैं कमांड लाइन से किसी प्रोजेक्ट में एक एकल nuget पैकेज कैसे अपडेट करूं?

<packages> 
    <package id="PackageA" version="1.2.1" targetFramework="net40" /> 
    <package id="PackageB" version="2.3.4" targetFramework="net40" /> 
    <package id="PackageC" version="1.0.0" targetFramework="net40" /> 
</packages> 

मैं दूसरों को अपडेट किए बिना PackageA अपडेट करना चाहते हैं। मुझे लगता है कि Update-Package in the Visual Studio package manager has this capability, लेकिन इसे एक टीएफएस बिल्ड मशीन पर चलाने की जरूरत है।

क्या कमांड लाइन से ऐसा करने का कोई तरीका है? प्रत्याशित कार्यप्रवाह निर्माण मशीन

  1. Nuget.exe चल बहाल
  2. Nuget.exe अद्यतन (प्रत्येक csproj फ़ाइल पर)

है लेकिन अद्यतन आदेश की अनुमति नहीं है हमें यह निर्दिष्ट करने के लिए कि कौन सा पैकेज अपडेट करना है। मुझे पता है कि संकुल के लिए एक अनुमत संस्करण टैग है, लेकिन हमें अलग-अलग शाखाओं को बनाने के लिए संकुल.कॉन्फिग फ़ाइल को बदलने की आवश्यकता होगी जिसके लिए विभिन्न घटकों को अद्यतन करने की आवश्यकता है या नहीं, जबकि पैकेज-विशिष्ट, csproj-specific कमांड लाइन हमें अपनी बिल्ड परिभाषाओं के माध्यम से प्रत्येक टीएफएस शाखा के साथ अद्यतन करने के लिए निर्भरताओं को जोड़ने की अनुमति दें।

उत्तर

14

nuget.exe update में -Id तर्क है जो परियोजना को निर्दिष्ट करता है। तो, उदाहरण के लिए,

nuget.exe update X.csproj -Id PackageA 
+0

यह एक अच्छा जवाब है। मैंने यह भी पाया कि (आपके सेटअप के आधार पर) आप बस .sln फ़ाइल का संदर्भ देने में सक्षम हैं जो बदले में समाधान के भीतर सभी प्रासंगिक .csproj फ़ाइलों के भीतर अद्यतन करता है, यानी; 'nuget अद्यतन X.sln -Id PackageA'। मैंने यह भी पाया कि '-फाइल कॉन्फ्लिक्टक्शन ओवरवाइट' (या अनदेखा) काफी आसान हो सकता है। – keithl8041

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