২০১৮ - কিভাবে প্যাকেজ.config এ সব প্যাকেজ ইনস্টল/আপডেট করতে NuGet পেতে পারি?




রবি প্রিপেইড প্যাকেজ (11)

VS2012 V11 এ, যদি আমি লাইন শেষে "-ইনস্টাইল" ব্যবহার করি তবে এটি কাজ করবে না।

তাই আমি সহজভাবে ব্যবহৃত:

Update-Package -ProjectName 'NAME_OF_THE_PROJECT'

আমি এটা একাধিক প্রকল্প সঙ্গে একটি সমাধান আছে। বেশীরভাগ তৃতীয় পক্ষের রেফারেন্সগুলি অনুপস্থিত, তবে প্রতিটি প্রকল্পের জন্য packages.config ফাইল রয়েছে। আমি কিভাবে সব প্যাকেজ ইনস্টল / আপডেট করতে NuGet পেতে পারি? এই প্রতিটি প্রকল্পের জন্য কমান্ড লাইন মাধ্যমে কাজ করা প্রয়োজন?


অনুসন্ধান ও তদন্তের 3 ঘন্টা পর।

আমার সাথে সমস্যা ছিল কারণ আমাদের দুই দলের সদস্য ছিল (গিটহুব সোর্স কন্ট্রোল ব্যবহার করে), কারণ আমরা রিমোট রিপোজিটরিতে পাঠানোর জন্য প্যাকেজগুলির জন্য ফাইলগুলি সীমাবদ্ধ করি নি, দলের একজন সদস্য সার্ভারে প্যাকেজ পাঠাচ্ছিল এবং আমি সেই পরিবর্তনগুলি টেনে আনলাম আমার স্থানীয়।

তারপরে আমি পিও হিসাবে একই সমস্যা ছিল, আমি সার্ভারে আমার এপিআই প্রকল্প প্রকাশ করতে পারবেন না।

এবং আমি শুধু ব্যবহার করা হয়েছে

আপডেট-প্যাকেজ-পুনঃ ইনস্টল - প্যাকেজ ম্যানেজার কনসোলে এই কমান্ডটি চালান

এই কমান্ডটি আপনার সমাধানগুলিতে ব্যবহৃত সমস্ত প্যাকেজ পুনরায় ইনস্টল করবে। (প্রতিটি প্রকল্পের জন্য)

বর্তমান সমাধানগুলির সমস্ত প্রকল্পগুলিতে সমস্ত প্যাকেজ পুনরায় ইনস্টল করুন:

Update-Package -ProjectName 'NameOfProject' -Reinstall - প্যাকেজ ম্যানেজার কনসোলে এই কমান্ডটি চালান

এই কমান্ডটি আপনার সমস্ত প্যাকেজগুলিকে পুনরায় ইনস্টল করবে যা "project-name" -র পরে আপনি নির্দিষ্ট প্রকল্পটির সাথে সম্পর্কিত। এবং আমি মনে করি এটি ভাল কারণ আমি সমাধানগুলির সমস্ত প্যাকেজ পুনরায় ইনস্টল করার জন্য অর্ধ ঘন্টা অপেক্ষা করেছি।

এই জন্য অনেক ধন্যবাদ।

এছাড়াও, আমি আপনাকে সুপারিশ করব যে যখন আপনি রিমোট সার্ভার থেকে পরিবর্তনগুলি টানেন, তখন "প্যাকেজগুলি পুনরুদ্ধার করুন" বোতাম টিপুন যা ভিজ্যুয়াল স্টুডিওতে দেখানো হবে।


আপনি Nuget 2.8 ইনস্টল হলে, চেকবক্স চেক করুন

Tools >> Nuget Manager >> Package Manager Settings >> Automatically check for missing packages during build

ভিজ্যুয়াল স্টুডিওতে। যদি এটি চেক করা হয়, তবে কেবলমাত্র প্রকল্পটিকে পুনঃনির্মাণ করা আপনার সমস্ত রেফারেন্স লাইব্রেরি পুনরুদ্ধার করবে।


আপনি যদি ওয়েবসাইট প্রোজেক্টগুলি ব্যবহার করেন তবে এখানে আরেকটি সমাধান রয়েছে, অথবা NuGet প্যাকেজ পুনরুদ্ধার সক্ষম করতে চান না।

প্যাকেজ ম্যানেজার কনসোলটি প্যাকেজ.config ফাইলে সমস্ত প্যাকেজ সংজ্ঞায়িত করতে এবং তাদের পুনরায় ইনস্টল করার জন্য ব্যবহার করতে পারবেন।

# read the packages.config file into an XML object
[xml]$packages = gc packages.config

# install each package 
$packages.packages.package | % { Install-Package -id $($_.id) -Version $($_.version) }

আমি আপনাকে করতে হবে প্রথম জিনিস প্যাকেজ পুনরুদ্ধার বৈশিষ্ট্য সক্রিয় করতে বিশ্বাস। here দেখুন। এই সমাধান (প্রকল্প না) পর্যায়ে সম্পন্ন করা হয়।

কিন্তু এটি আপনাকে সমস্ত উপায়ে খুঁজে পাবে না - আমি পুনরুদ্ধারের বৈশিষ্ট্যটি সক্ষম করার পরে একই সমস্যাতে দৌড়েছি। (VS2013, NuGet 2.8।)

এটি প্রমাণিত হয়েছিল যে আমি যখন প্রকল্পটি সম্পন্ন করেছি তখন (আমি অচেনাভাবে) উৎস নিয়ন্ত্রণে প্যাকেজগুলি করেছি - কিন্তু ভিসুয়াল স্টুডিও (এবং সোর্স কন্ট্রোল প্লাগইন) চেক-ইন সম্পাদনের সময় বাইনারিগুলিকে সহায়কভাবে উপেক্ষা করেছিল।

আমি একটি রিলিজ শাখা তৈরি যখন সমস্যা উদ্ভূত। ডেভ / মুখ্য / ট্রাঙ্ক শাখার আমার স্থানীয় অনুলিপিটির বাইনারি ছিল, কারণ আমি মূলত প্যাকেজগুলি ইনস্টল / ডাউনলোড করেছি।
যাইহোক, নতুন রিলিজ শাখা,

  • প্যাকেজ ফোল্ডার এবং .nupkg ফাইলগুলি সব সেখানে ছিল - তাই NuGet পুনরুদ্ধারের কিছু ছিল না মনে হয় না;
  • কিন্তু একই সময়ে, কোন DLL উপস্থিত ছিল না - অর্থাৎ তৃতীয় পক্ষের রেফারেন্সগুলি অনুপস্থিত ছিল - তাই আমি তৈরি করতে পারিনি।

আমি $(SolutionDir)/packages (রিলিজ শাখার অধীনে $(SolutionDir)/packages সমস্ত প্যাকেজ ফোল্ডার মুছে ফেলেছি এবং তারপরে একটি সম্পূর্ণ পুনর্নির্মাণ চালানো হয়েছিল এবং এইবার বিল্ড সফল হয়েছিল।
... এবং তারপর অবশ্যই আমি ফিরে গিয়ে সোর্স কন্ট্রোল (ট্রাঙ্ক এবং রিলিজ শাখা) থেকে প্যাকেজ ফোল্ডার মুছে ফেললাম। আমি এখনও (এখনও) repositories.config ফাইল মুছে ফেলা উচিত কিনা তা স্পষ্ট নয়।

প্রকল্পের টেমপ্লেটগুলি দ্বারা আপনার জন্য অনেকগুলি উপাদান ইনস্টল করা হয়েছে - অন্তত ওয়েব প্রোজেক্টগুলির জন্য - NuGet প্যাকেজগুলি। অর্থাৎ, এই সমস্যাটি আপনি যোগ করেছেন এমন প্যাকেজগুলিতে সীমাবদ্ধ নয়।
তাই প্রকল্প / সমাধান তৈরি করার পরে অবিলম্বে প্যাকেজ পুনরুদ্ধার সক্ষম করুন, এবং আপনি একটি প্রাথমিক চেক-ইন সঞ্চালন করার আগে, packages ফোল্ডারটি সাফ করুন (এবং নিশ্চিত করুন যে আপনি .nuget নিয়ন্ত্রণ করতে ফোল্ডারটি .nuget ।)।

Disclaimer: আমি এখানে অন্য একটি উত্তর দেখেছি যা নির্দেশ করে যে packages ফোল্ডারটি সাফ করাটি রেজোলিউশনের অংশ ছিল। এটি আমাকে সঠিক পথে রাখে, তাই আমি লেখককে ক্রেডিট দিতে চাই, কিন্তু আমি আর সেই প্রশ্ন / উত্তরটি সনাক্ত করতে পারছি না। আমি এটি জুড়ে stumble যদি আমি একটি সম্পাদনা পোস্ট করব।

আমি মনে রাখবেন যে Update-Package -reinstall .sln এবং .csproj / .vbproj ফাইলগুলি সংশোধন করবে। অন্তত যে আমার ক্ষেত্রে এটা কি। কোন IMHO এই বিকল্পটি অনেক কম আকর্ষণীয় করে তোলে।


আমি এটি একটি পুরানো পোস্ট জানি, কিন্তু এই দরকারী হতে পারে মনে। আপডেট প্রক্রিয়ার সময় নির্দিষ্ট প্যাকেজগুলি উপেক্ষা করার প্রয়োজন হলে (জাভাস্ক্রিপ্ট রেফারেন্স আপডেট করার যে কোন প্যাকেজগুলির মতো), নিম্নলিখিত পাওয়ারশেল স্ক্রিপ্টটি ব্যবহার করুন (প্যাকেজ ম্যানেজার কনসোলে আপনার প্যাকেজ উৎস "সব" তে সেট করা আছে তা নিশ্চিত করুন):

সম্পাদন 2014-09-25 10:55 AM EST - স্ক্রিপ্টে একটি বাগ সংশোধন করা হয়েছে

$packagePath = "packages.config"
$projectName = "MyProjectName"

$packagesToIgnore = @(
    "bootstrap",
    "jQuery",
    "jquery-globalize",
    "jquery.mobile",
    "jQuery.jqGrid",
    "jQuery.UI.Combined",
    "jQuery.Validation",
    "Microsoft.jQuery.Unobtrusive.Validation",
    "Modernizr",
    "Moment.js"
)

[xml]$packageFile = gc $packagePath
$packagesToProcess = $packageFile.packages.package | Where-Object {$packagesToIgnore -notcontains $_.id}

$packagesToProcess | % { Update-Package -reinstall -projectname $projectName -id $($_.id) }

এখন ভিজ্যুয়াল স্টুডিও ২01২-এ নুজ প্যাকেজ ম্যানেজার কনসোল আপনাকে স্বয়ংক্রিয়ভাবে কোনও প্যাকেজ ইনস্টল না করে প্যাকেজ.confিগে স্বয়ংক্রিয়ভাবে "পুনরুদ্ধার করুন" বোতামটি দেয়। অসাধারণ বৈশিষ্ট্য!


বর্তমান সমাধানগুলির সমস্ত প্রকল্পগুলিতে সমস্ত প্যাকেজ পুনরায় ইনস্টল করুন:

Update-Package -Reinstall

বর্তমান সমাধান এর বিশেষ প্রকল্পে সমস্ত প্যাকেজ unarity ( unarity এবং ashes999 ধন্যবাদ ):

Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

ভিজ্যুয়াল স্টুডিও 2017 -তে যখন আপনি আইডিই ব্যবহার করে কম্পাইল করেন - এটি সমস্ত অনুপস্থিত নুজেট প্যাকেজগুলি ডাউনলোড করে এবং "প্যাকেজ" ফোল্ডারে সংরক্ষণ করে।

কিন্তু বিল্ড মেশিন কম্পাইলেশন msbuild.exe ব্যবহার করে সম্পন্ন করা হয়। যে ক্ষেত্রে, আমি nuget.exe ডাউনলোড।

Msbuild.exe নির্বাহ করার আগে প্রতিটি বিল্ড প্রক্রিয়া চলাকালীন। এটি কার্যকর হবে -> nuget.exe NAME_OF_SLN_File পুনরুদ্ধার করুন (যদি শুধুমাত্র একটি .এলএলএন ফাইল থাকে তবে আপনি সেই পরামিতিটি উপেক্ষা করতে পারেন)।


ভিজ্যুয়াল স্টুডিওর মধ্যে থেকে এটি করার আরেকটি নতুন এবং দ্রুত উপায় রয়েছে। ডেভিড ইব্বো দ্বারা এই পোস্টটি দেখুন, এবং আপনি যদি সমস্যার সম্মুখীন হন তবে মন্তব্য বিভাগটি উল্লেখ করুন। মূলত, আপনি প্যাকেজ ম্যানেজার প্রম্পটে নিম্নলিখিত কাজ করেন:

PM> Install-Package NuGetPowerTools
PM> Enable-PackageRestore

তারপরে, যখন আপনি আপনার সমাধানটি তৈরি করেন তখন প্যাকেজগুলি অনুপস্থিত থাকলে স্বয়ংক্রিয়ভাবে ইনস্টল হবে।

হালনাগাদ:

এই কার্যকারিতাটি Nuget 1.6 এ ভিজ্যুয়াল স্টুডিও ইন্টিগ্রেশন সহ নির্মিত হয়েছে যাতে আপনাকে NuGetPowerTools বা কমান্ড টাইপ করারও দরকার হয় না। আপনি কি করতে হবে

সমাধান এক্সপ্লোরারে সমাধান নোডের উপর রাইট ক্লিক করুন এবং NuGet প্যাকেজ পুনরুদ্ধার সক্ষম করুন নির্বাচন করুন।

আরো বিস্তারিত জানার জন্য এই নিবন্ধটি পড়ুন।


Update-Package -ProjectName 'YourProjectNameGoesHere' -Reinstall

আমি পাওয়া সবচেয়ে ভাল এবং সহজ উদাহরণ। এটি packages.config এ তালিকাবদ্ধ সমস্ত nugets পুনরায় ইনস্টল করবে এবং এটি বর্তমান সংস্করণগুলি সংরক্ষণ করবে। YourProjectNameGoesHere এখানে প্রকল্পের নাম দিয়ে প্রতিস্থাপন করুন।