NuGet প্যাকেজ পুনঃস্থাপন কাজ না




(14)

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

http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

আমি সেই নির্দেশাবলী অনুসরণ করেছি, এখন একটি .nuget ফোল্ডার থাকা উচিত যেখানে আমার থাকা উচিত। আমার .csproj ফাইলটিতে নিম্নলিখিত এন্ট্রি আছে:

<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

এবং এখনো আমি যখন আমার সমাধান পুনর্নির্মাণ, অনুপস্থিত প্যাকেজ পুনরুদ্ধার করা হয় না।

আমি কি অনুপস্থিত? আমি কিভাবে এই সমস্যা নির্ণয় করতে পারেন?


Nuget পুনঃস্থাপন কাজ করার জন্য একটি শর্টকাট আছে, 1. VS সরঞ্জাম বিকল্প মেনুতে ইন্টারনেট সংযোগ বা নুগ ইউআরএলগুলি সঠিক কিনা তা নিশ্চিত করুন 2. সমাধানটিতে nuget বা nuget ফোল্ডারটি দেখুন। অন্যথায় - nuget.exe পেতে কাউকে অনুলিপি করুন

  1. বিদ্যমান থাকলে প্যাকেজ ফোল্ডার মুছে ফেলুন

  2. প্যাকেজ ম্যানেজার কনসোলটি খুলুন এই কমান্ডটি চালান

    • nuget.exe সম্পূর্ণ পাথ পেস্ট করুন। এসএসএনএন ফাইল সম্পূর্ণ পথ পুনরুদ্ধার!
  3. ইনস্টল-প্যাকাকge কমান্ডটি ব্যবহার করুন, যদি বিল্ডটি কোনও অনুপস্থিত রেফারেন্সগুলির জন্য না পায়। আশা করি এটা সাহায্য করবে (এইচআইএইচ)

Nuget প্যাকেজ ম্যানেজার কনসোলের মধ্যে নিম্নলিখিত কমান্ডগুলি চালানোর দ্বারা প্যাকেজ পুনরুদ্ধারের জন্য কার্যকর করতে উল্লেখ্য

আপডেট-প্যাকেজ-পুনঃ ইনস্টল

সোর্স সবকিছু সমাধান পুনরায় ইনস্টলেশনের।

আপডেট-প্যাকেজ-পুনঃ ইনস্টল -প্রকল্পনাম MyProj

MyProj প্রকল্প সবকিছু বাহিনী পুনরায় ইনস্টলেশনের।

নোট : এটি পারমাণবিক বিকল্প। এই কমান্ডটি ব্যবহার করার সময় আপনি ইনস্টল করা প্যাকেজের একই সংস্করণ পাবেন না এবং এটি সমস্যাগুলির দিকে পরিচালিত করতে পারে। সমাধান পর্যায়ে বিপরীত হিসাবে এটি একটি প্রকল্পের স্তরে ঘটতে কম সম্ভাবনা।

আপনি একই মেজর এবং ক্ষুদ্র সংস্করণ উপাদানটির সাথে নতুন সংস্করণগুলির আপগ্রেডগুলি সীমাবদ্ধ করতে -safe কমান্ডলাইন প্যারামিটার বিকল্পটি ব্যবহার করতে পারেন। এই বিকল্পটি পরে যোগ করা হয়েছে এবং মন্তব্যগুলিতে উল্লেখ করা কিছু বিষয় সমাধান করে।

আপডেট-প্যাকেজ-পুনঃ ইনস্টল-নিরাপদ


vs2015 কোন nuget পুনরুদ্ধারের সমস্যা সক্রিয় করুন। আমার সমাধান:

  1. ফোল্ডার যুক্ত করুন। nuget, ডিরেক্টরীতে NuGet.Config এবং NuGet.targets ফাইল যুক্ত করুন।

  2. প্রতিটি প্রকল্প ফাইল যোগ করুন: বিল্ড

  <RestorePackages>true</RestorePackages>

  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
    <PropertyGroup>
      <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
    </PropertyGroup>
    <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" />
  </Target>

অন্য কোনও সমাধান আমার অবস্থানে কাজ করে নি:

AspNetCore নির্ভরতা ইনস্টল / আনইনস্টল করা হয়েছে এবং ক্যাশে হচ্ছে। 'AspNetCore.All' সঠিকভাবে আপডেট / পুনরায় ইনস্টল / অপসারণ করতে অস্বীকার করবে। এবং আমি যা করেছি তা নির্বিশেষে, এটি ক্যাশেড নির্ভরতাগুলি ব্যবহার করবে (যেটি এর সাথে সামঞ্জস্যপূর্ণ ছিল না), কারণ এটি একটি উচ্চতর সংস্করণ ছিল।

  1. ব্যাকআপ সবকিছু। নির্ভরতাগুলির তালিকাটি নোট করুন যা আপনাকে পুনরায় ইনস্টল করতে হবে, ভিজুয়াল স্টুডিও থেকে প্রস্থান করুন
  2. একটি টেক্সট এডিটর সব .proj ফাইল খুলুন এবং সব প্যাকেজ রেফারেন্স মুছে ফেলুন
  3. প্রতিটি প্রকল্পে, bin , obj ফোল্ডার মুছে দিন
  4. আপনি সমাধান খুঁজে পেতে কোন "প্যাকেজ" ফোল্ডার মুছে দিন।
  5. ওপেন সমাধান, Tools > Nuget Package Manager > Package Manager Settings এবং Clear all Nuget caches । কনসোল পরীক্ষা করুন কারণ এটি কিছু আইটেম মুছে ফেলতে ব্যর্থ হতে পারে - ফোল্ডার পাথ কপি করুন এবং ভিজ্যুয়াল স্টুডিও থেকে প্রস্থান করুন।
  6. যে ফোল্ডার থেকে কিছু মুছে ফেলুন পুনরায় সমাধান করুন এবং স্ক্র্যাচ থেকে আবার nuget প্যাকেজ ইনস্টল শুরু।

যদি এটি এখনও কাজ না করে তবে পুনরাবৃত্তি করুন কিন্তু উইন্ডোজ এক্সপ্লোরারে আপনার ড্রাইভটি nuget জন্য অনুসন্ধান করুন এবং কিছু ক্যাশে খুঁজছেন মুছে দিন।


আপনি নিম্নলিখিত একটি উপায় চয়ন করতে হবে:

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

Update-Package –reinstall <packageName>

এটির নামের দ্বারা একটি প্যাকেজ পুনরায় ইনস্টল করা এবং সমস্ত সমাধান প্রকল্পের প্রকল্পগুলির নির্ভরতা উপেক্ষা করা:

Update-Package –reinstall <packageName> -ignoreDependencies

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

Update-Package –reinstall <packageName> <projectName>

একটি নির্দিষ্ট প্রকল্পে সব প্যাকেজ পুনরায় ইনস্টল করা:

Update-Package -reinstall -ProjectName <projectName>

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

Update-Package -reinstall 

আমার ক্ষেত্রে, একটি বাতিল নুগেট পুনঃস্থাপন-প্রচেষ্টা সমাধান মধ্যে packages.config config ফাইলগুলির মধ্যে একটি দূষিত হয়েছে। আমি আমার গিট কাজ গাছ পরীক্ষা করার আগে এই আবিষ্কার না। ফাইলটিতে পরিবর্তনগুলি ফিরিয়ে দেওয়ার পরে, নুগ্ট পুনঃস্থাপন আবার কাজ করছিল।


আমার সিস্টেমে সিস্টেমে রিস্টোর করার পরে আমার কাছে NuGet প্যাকেজগুলি ভেঙ্গে গেছে, এটি প্রায় দুই দিন ধরে ব্যাক আপ করে। (ইতিমধ্যেই নুগেট প্যাকেজ ইনস্টল করা হয়েছে।) এটি ঠিক করার জন্য, আমার ব্যবহারকারীর প্রোফাইলে .nuget \ প্যাকেজ ফোল্ডারে যেতে হবে, প্যাকেজগুলি খুঁজে বের করতে হবে এবং তাদের মুছে ফেলতে হবে। শুধুমাত্র তখনই ভিজ্যুয়াল স্টুডিও প্যাকেজগুলিকে তাজা করে টেনে আনবে এবং সঠিকভাবে উল্লেখ হিসাবে যুক্ত করবে।


আমি দুটি পরিস্থিতিতে এই সমস্যা মধ্যে চালানো হয়েছে।

প্রথমত, যখন আমি msbuild.exe ব্যবহার করে কমান্ড লাইন থেকে আমার সমাধান তৈরি করার চেষ্টা করি। দ্বিতীয়ত, যখন আমি TFS এবং CI ব্যবহার করে আমার বিল্ড সার্ভারে sln এবং ধারণকারী প্রকল্পগুলি তৈরি করার চেষ্টা করি।

আমি রেফারেন্স অনুপস্থিত যে দাবী ত্রুটি পেতে। আমার স্থানীয় বিল্ড ডিরেক্টরি এবং TFS সার্ভারের উভয় পরিদর্শন করার সময় আমি দেখি যে / প্যাকেজ ফোল্ডার তৈরি করা হয়নি এবং নুজেট প্যাকেজগুলি অনুলিপি করা হয় না। আলেকজান্ডারের উত্তরগুলিতে তালিকাভুক্ত নির্দেশাবলী অনুসরণ করে http://nuget.codeplex.com/workitem/1879 জন্যও কাজ করে নি।

আমি VS2010 এর মাধ্যমে পুনরুদ্ধার প্যাকেজগুলি সক্ষম করেছি এবং আমি দেখেছি যে VS2010 এর মধ্যে থেকে কেবলমাত্র কাজ তৈরি করে। আবার, msbuild ব্যবহার করে ব্যর্থ। আমার কার্যকারিতা সম্ভবত সম্পূর্ণ অবৈধ, তবে আমার পরিবেশের জন্য এটি স্থানীয়ভাবে তৈরি হওয়া কমান্ড লাইন থেকে কাজ করে এবং টিআইএস-এ সিআই বিল্ড থেকে কাজ করে।

আমি গিয়েছিলাম। \ Nget \ NuGet.targets ফাইলটিতে এই লাইনটি পরিবর্তন করুন এবং পরিবর্তন করুন:

থেকে:

<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -o "$(PackagesDir)"</RestoreCommand>

থেকে: (নোটিশ, ভেরিয়েবল কাছাকাছি কোট ছাড়া)

<RestoreCommand>$(NuGetCommand) install $(PackagesConfig) -source $(PackageSources) -o $(PackagesDir)</RestoreCommand>

আমি বুঝতে পারি যে যদি আমার ডিরেক্টরির মধ্যে তাদের মধ্যে স্পেস থাকে, তবে এটি ব্যর্থ হবে, কিন্তু আমার ডিরেক্টরিগুলিতে স্থান নেই এবং তাই এই কার্যকারিতাটি সফলভাবে সম্পূর্ণ হওয়ার জন্য আমার বিল্ডগুলি পেয়েছে ... সময়ের জন্য।

আমি বলব যে আপনার বিল্ডে ডায়াগনস্টিক লেভেল লগিং চালু করলে এটি দেখাবে যে msbuild দ্বারা কোন কমান্ডগুলি কার্যকর করা হচ্ছে। এই অস্থায়ীভাবে লক্ষ্য ফাইল হ্যাকিং আমাকে কি নেতৃত্বে হয়।


কখনও কখনও কিছু অদ্ভুত ঘটে এবং স্বয়ংক্রিয়ভাবে পুনরুদ্ধার করতে ভিজ্যুয়াল স্টুডিও ব্যবহার করে কাজ করে না। এই ক্ষেত্রে আপনি NuGet প্যাকেজ ম্যানেজার কনসোল ব্যবহার করতে পারেন। টুলস -> NuGet প্যাকেজ ম্যানেজার -> প্যাকেজ ম্যানেজার কনসোল থেকে ভিজ্যুয়াল স্টুডিওতে এটি খোলা আছে। কনসোল মধ্যে কমান্ড সহজ। এবং কমান্ড টাইপ করার সময় প্রসঙ্গ সহায়তা পেতে শুধু বোতাম টিপুন এবং এটি আপনার সমস্ত অক্ষর যা আপনি টাইপ করছেন অক্ষর দিয়ে শুরু করবেন। সুতরাং যদি প্যাকেজ ইনস্টল না হয়, উদাহরণস্বরূপ log4net, নিম্নলিখিত কমান্ড টাইপ করুন:

ইনস্টল-প্যাকেজ log4net

আপনি আরো অনেক কিছু করতে পারেন, ইনস্টলেশনের সংস্করণটি নির্দিষ্ট করতে, প্যাকেজ আপডেট করতে, প্যাকেজ আনইনস্টল করতে ইত্যাদি।

ভিসুয়াল স্টুডিও একটি weirdo মত অভিনয় যখন আমাকে সাহায্য করার জন্য কনসোল ব্যবহার করতে হবে।


ভিএস 2017

সরঞ্জাম> NuGet প্যাকেজ ম্যানেজার> প্যাকেজ ম্যানেজার সেটিংস> সাধারণ ক্লিক করুন "সমস্ত NuGet ক্যাশে সাফ করুন"


যদি অন্য কোনও উত্তর আপনার জন্য কাজ না করে তবে নীচেরটি চেষ্টা করুন যা কেবলমাত্র আমার জন্য কাজ করে:

আপনার .csproj ফাইল খুঁজুন এবং একটি টেক্সট এডিটর এ এটি সম্পাদনা করুন।

<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> আপনার .csproj ফাইলটিতে ট্যাগ করুন এবং সমগ্র ব্লকটি মুছে দিন।

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

Update-Package -reinstall

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


যদি আপনি যে ত্রুটির মুখোমুখি হন সেটি হল "রিমোট সার্ভারে সংযোগ করতে অক্ষম", তবে এটি উপরের উপাত্তগুলিতে প্রদত্ত চেকগুলির পাশাপাশি এই চেকটি আপনার কাছে উপকৃত হবে।

আমি দেখেছি যে দুটি NUGET প্যাকেজ সোর্স রয়েছে যা থেকে প্যাকেজ ডাউনলোড করা যেতে পারে (সরঞ্জাম-> নুগ প্যাকেজ ম্যানেজার-> প্যাকেজার ম্যানেজার সেটিংসের মধ্যে)। প্যাকেজ সোর্সগুলির মধ্যে একটি কার্যকরী ছিল না এবং নুগেট শুধুমাত্র সেই উৎস থেকে ডাউনলোড করার চেষ্টা করছিলেন।

একবার প্যাকেজ উত্সটি থেকে ডাউনলোড করার জন্য আইটেমগুলি একবারের মধ্যে পড়ে গিয়েছিল: https://www.nuget.org/api/v2/ সেটিংসগুলিতে স্পষ্টতই


স্ক্র্যাচ থেকে একটি নতুন প্রকল্প তৈরি করার সবচেয়ে ভাল কাজকর্ম, তারপর কোড সহ সমস্ত উৎস ফাইল আমদানি করুন। আমার প্রকল্প তাই জটিল ছিল না তাই আমি সেখানে কোন সমস্যা ছিল।


স্বয়ংক্রিয় প্যাকেজ পুনরুদ্ধার নিম্নলিখিত যে কোনো কারণের জন্য ব্যর্থ হবে:

  1. আপনি NuGet.exe এবং NuGet.targets ফাইলগুলি সমাধান এর .nuget ফোল্ডার থেকে সরিয়েছেন না (যা আপনার সমাধান রুট ফোল্ডারে পাওয়া যাবে)
  2. আপনি সরঞ্জাম >> বিকল্প >> Nuget প্যাকেজ ম্যানেজার >> সাধারণ সেটিংস থেকে স্বয়ংক্রিয় প্যাকেজ পুনরুদ্ধার সক্ষম করে নি।
  3. আপনি Nuget.targets ফাইলে আপনার সমস্ত প্রকল্পগুলিতে ম্যানুয়ালি রেফারেন্সগুলি সরাতে ভুলে গেছেন
  4. আপনাকে ভিসুয়াল স্টুডিওটি পুনরায় চালু করতে হবে (আবার শুরু করার আগে আপনার টাস্ক ম্যানেজার থেকে প্রক্রিয়াটি হত্যা করা হয়েছে তা নিশ্চিত করুন)।

নিচের নিবন্ধটি 1-3 সম্পর্কে কীভাবে যেতে হবে তা বিস্তারিতভাবে বর্ণিত হয়েছে: https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore