visual studio 2012 - Nugget রেফারেন্স পুনরুদ্ধার?




visual-studio-2012 nuget (9)

আমি ভিজ্যুয়াল স্টুডিও 2012 সালে সমাধান এবং প্রকল্প আছে।

প্রকল্পটির মূল প্রজেক্টে একটি ফাইল packages.config .config রয়েছে।

এই প্রশ্নটির জন্য, আমি অনুমান করি যে আমি এই প্রকল্পগুলিকে আমার প্রকল্পের References বিভাগ থেকে সরানো করেছি।

NuGet প্যাকেজ ম্যানেজারে যাওয়ার সময়, ইন্টারফেসটি এখনও এই প্যাকেজের পাশে একটি টিপ রিপোর্ট করছে, যা তারা ইনস্টল করা নির্দেশ করে।

packages.config .config থেকে সমস্ত এন্ট্রি মুছে ফেলার একমাত্র উপায় আমি দেখতে পারি যে এই পরিস্থিতিটি কিভাবে সমাধান করা যায়, যা নুগেট ইন্টারফেসের ইস্যুটিকে ইনস্টল করার সমস্যাটি ঠিক করবে এবং প্রতিটিকে পুনরায় যুক্ত করবে।

একটি স্মার্ট উপায় আছে? আমি 'নিশ্চিহ্ন প্যাকেজগুলি পুনরুদ্ধার করতে নুগেট সক্ষম করতে' সক্ষম করার আশা করেছি, এটি সমাধান করবে, তবে এটি কোনও কাজ বলে মনে হচ্ছে না।


  1. প্রকল্পের প্যাকেজ.config ফাইল কপি করুন এবং সব সংস্করণ সংশোধন প্রযোজ্য
  2. সমস্ত প্যাকেজ unistall এবং ডেভেনশন মুছে ফেলুন

    $packages = Get-Package -ProjectName [nameOfProjectToRestore]
    foreach ($package in $packages) {
        uninstall-package  -projectname [nameOfProjectToRestore] -id $package.Id -version $package.version -RemoveDependencies -force ;
    }
    
  3. প্রকল্পের রুট প্যাকেজ ফোল্ডার সাফ করুন

  4. ওয়েবসাইট ফোল্ডার রুট করতে package.config সংশোধন কপি

  5. প্রকল্প পুনরুদ্ধার করতে এই কোড চালান

    $packages = Get-Package -ProjectName [nameOfProjectToRestore]
    foreach ($package in $packages) {
        uninstall-package  -projectname [nameOfProjectToRestore] -id $package.Id -version $package.version -RemoveDependencies -force ;
    }
    foreach ($package in $packages) {
        install-package  $package.Id -ProjectName [nameOfProjectToRestore] -Version $package.Version
    }
    

@ জুরির সাথে একমত হতে হবে যে জেএমফেনল দ্বারা ব্যাপকভাবে জনপ্রিয় উত্তরটি সম্পূর্ণ হয়নি। ভাঙা রেফারেন্সের ক্ষেত্রে, আমি যে বেশিরভাগ সময় আপনি সর্বশেষ প্যাকেজে আপডেট করতে চান তা জমা দিবেন না , তবে আপনি যে সংস্করণগুলি ব্যবহার করছেন তা কেবলমাত্র আপনার সংস্করণগুলি ঠিক করুন। এবং জুরি ঠিক কাজ করার জন্য একটি সহজ ফাংশন Sync-References প্রদান করে।

তবে আমরা প্রকল্পটি পাশাপাশি প্যাকেজ দ্বারা ফিল্টার করার জন্য নমনীয়তাটি অনুমোদন করে আরও কিছুটা এগিয়ে যেতে পারি:

function Sync-References([string]$PackageId, [string]$ProjectName) {
    get-project -all | 
    Where-Object { $_.name -match $ProjectName } |
    ForEach-Object {
        $proj = $_ ;
        Write-Output ('Project: ' + $proj.name)
        Get-Package -project $proj.name |
        Where-Object { $_.id -match $PackageId } |
        ForEach-Object { 
            Write-Output ('Package: ' + $_.id)
            uninstall-package -projectname $proj.name -id $_.id -version $_.version -RemoveDependencies -force
            install-package -projectname $proj.name -id $_.id -version $_.version
        }
    }
}

আমি অনুপস্থিত রেফারেন্স সঙ্গে একই সমস্যা ছিল। আমার দৃশ্যকল্প নীচে:

  • তাজা উইন্ডোজ 10 মেশিন এবং ভিএস কমিউনিটি 2015 ইনস্টল
  • শুধু TFS মাধ্যমে রিপোজিটরি কোড চেক আউট
  • এক সমাধান তৈরি করা ঠিক সূক্ষ্ম, এক সমাধানটিতে একটি অনুপস্থিত রেফারেন্স (EF, System.Http, উদাহরণস্বরূপ) সহ একটি প্রকল্প ছিল, তবে আপেক্ষিক নুজেট প্যাকেজ সঠিকভাবে ইনস্টল করা হয়েছিল।

প্রকল্প এবং প্যাকেজগুলির সমস্ত সংস্করণ নম্বর মেলে, nuget পুনরুদ্ধার (সব উপায়ে) কাজ করে না।

আমি কিভাবে এটি সংশোধন করেছি: কেবল সমাধান রুটে প্যাকেজ ফোল্ডারগুলি মুছুন এবং nuget পুনরুদ্ধার চালান। এই মুহুর্তে dlls সঠিকভাবে ডাউনলোড করা হয় এবং অনুপস্থিত রেফারেন্সের জন্য যোগ করা যেতে পারে।


আমি এই সমস্যা থেকে অনেক কষ্ট পেয়েছি, আমার ক্ষেত্রে অনুপস্থিত NuGet ডাউনলোড করা হয়েছে (তবে এটি পুনরুদ্ধার করা হচ্ছে না) এবং আমি আনইনস্টল এবং পুনরায় ইনস্টল করতে পারছি না কারণ আমি ইনস্টল করা কিছু প্যাকেজ সংশোধন করেছি ... তাই:

আমি কেবল ক্যাশে এবং পুনর্নির্মাণ সাফ করা এবং এটি কাজ। (সরঞ্জাম-বিকল্প-নুগ প্যাকেজ ম্যানেজার - সাধারণ)

এছাড়াও এই লিঙ্কটি https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore সহায়তা করে।


এই ক্ষেত্রে কেউ আমার জন্য সাহায্য করে, উপরের কোনটি যথেষ্ট ছিল না। আমি এখনও নির্মাণ করতে পারিনি, ভিএস এখনও রেফারেন্স খুঁজে পাচ্ছি না। প্যাকেজটি পুনরুদ্ধারের পরে কীটি বন্ধ এবং পুনঃপুন করা সহজ ছিল।

এখানে দৃশ্যটি (ভিজ্যুয়াল স্টুডিও ২01২ ব্যবহার করে):

আপনি একটি সমাধান খুলুন যে প্যাকেজ অনুপস্থিত আছে। রেফারেন্সগুলি দেখায় যে ভিএস তাদের খুঁজে পাচ্ছে না। অন্তর্ভুক্ত অনুপস্থিত প্যাকেজ পুনরুদ্ধার করার অনেক উপায় আছে

  • স্বয়ং পুনরুদ্ধার সেট করা একটি সমাধান বিল্ডিং
  • প্যাকেজ ম্যানেজার কনসোল খোলার এবং চমৎকার "পুনঃস্থাপন" বোতামে ক্লিক করুন
  • আপনি কমান্ড লাইন nuget ইনস্টল আছে nuget restore করছেন

কিন্তু যাই হোক না কেন অভিপ্রায় কি, যারা রেফারেন্স এখনও অনুপস্থিত হিসাবে দেখানো হবে। এবং যখন আপনি এটি বিল্ড ব্যর্থ হবে। দীর্ঘশ্বাস. তবে আপনি যদি সমাধানটি বন্ধ করে আবার এটি খুলতে চান তবে VS সেই সুন্দর <HintPath> গুলি আবার পরীক্ষা করে দেখায় যে প্যাকেজটি যেখানে রয়েছে সেগুলির পিছনে রয়েছে এবং সমস্ত বিশ্বের সাথে ভাল।

হালনাগাদ

ভিজুয়াল স্টুডিও এখনও আপনার কাছে প্যাকেজ আছে দেখে না? এখনও একটি রেফারেন্স দেখাচ্ছে যে এটি সমাধান করা যাবে না? আপনার পুনঃস্থাপিত প্যাকেজটির সংস্করণটি আপনার .csproj ফাইলে <HintPath> হিসাবে ঠিক আছে তা নিশ্চিত করুন। এমনকি একটি ছোটখাট বাগ ফিক্স নম্বর (যেমন 1.10.1 থেকে 1.10.2) রেফারেন্স ব্যর্থ হতে পারে। আপনি সরাসরি আপনার csproj xml সম্পাদনা করে অথবা অন্যথায় রেফারেন্সটি সরিয়ে এবং প্যাকেজ ডিরেক্টরিতে নতুন পুনঃস্থাপিত সংস্করণে একটি নতুন পয়েন্ট তৈরি করে এটি ঠিক করতে পারেন।


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

Update-Package -Reinstall -ProjectName Proteus.Package.LinkedContent -IgnoreDependencies

নিম্নলিখিত স্ক্রিপ্ট প্যাকেজ ম্যানেজার কনসোল উইন্ডোতে চালানো যেতে পারে, এবং তাদের পুনঃ ইনস্টল করার আগে আপনার সমাধান প্রতিটি প্রকল্প থেকে সমস্ত প্যাকেজ মুছে ফেলবে।

foreach ($project in Get-Project -All) { 
    $packages = Get-Package -ProjectName $project.ProjectName
    foreach ($package in $packages) {
        Uninstall-Package $package.Id -Force -ProjectName $project.ProjectName
    }
    foreach ($package in $packages) {
        Install-Package $package.Id -ProjectName $project.ProjectName -Version $package.Version
    }
}

এটি আবার প্রতিটি প্যাকেজের ইনস্টল স্ক্রিপ্ট চালাবে, যা অনুপস্থিত সমাবেশ রেফারেন্স পুনরুদ্ধার করা উচিত। দুর্ভাগ্যবশত, স্ক্রিপ্টগুলি ইনস্টল করার অন্যান্য সমস্ত উপাদানগুলি করতে পারে - ফাইলগুলি তৈরি এবং কনফিগারেশনগুলি সংশোধন করার মতো - আবারও ঘটবে। আপনি সম্ভবত একটি পরিচ্ছন্ন কাজকারী অনুলিপি দিয়ে শুরু করতে চান এবং আপনার প্রকল্পটিতে কোন পরিবর্তনগুলি এবং কী উপেক্ষা করা যায় সেগুলি চয়ন করতে এবং চয়ন করতে আপনার এসসিএম সরঞ্জামটি ব্যবহার করুন।


ভিজ্যুয়াল স্টুডিও 2015 (সলিউশন সোর্স কন্ট্রোল, এমভিসি-প্রজেক্টের অধীনে), সাসানো এর Update-Package -Reinstall -ProjectName Your.Project.Name পুনঃ ইনস্টল -প্রজেক্টনাম আপনার। প্রজেক্ট. Update-Package -Reinstall -ProjectName Your.Project.Name কাজ করেছে, কিন্তু এটি কিছু লেখার লকের সাথে Update-Package -Reinstall -ProjectName Your.Project.Name

আমি "প্যাকেজ" মুছে ফেলতে হয়েছিল - নিজে আগে ফোল্ডার। (এটি উৎস নিয়ন্ত্রণের কারণে লক করা লাগছিল বলে মনে হচ্ছে)।

এছাড়াও, আমি NuGet প্যাকেজ ম্যানেজার থেকে এমভিসি-প্যাকেজ পুনরায় ইনস্টল করতে হয়েছিল।


প্যাকেজ পুনরায় ইনস্টল করার চেষ্টা করুন

NuGet প্যাকেজ ম্যানেজার কনসোলে নিম্নলিখিত কমান্ডটি প্রবেশ করান:

Update-Package -Reinstall -ProjectName Your.Project.Name

যদি আপনি প্যাকেজগুলিকে পুনরায় ইনস্টল করতে চান এবং পুরো সমাধানটির জন্য রেফারেন্স পুনঃস্থাপন করতে চান তবে -ProjectName পরামিতিটি বাদ দিন।





nuget