আমি কীভাবে ভিজুয়াল স্টুডিওতে নিউগেট প্যাকেজ পুনরুদ্ধার সক্ষম করব?


272

স্ট্যাকের মতো একটি অনুরূপ পোস্ট রয়েছে তবে এটি আমার সমস্যার সাথে সম্ভবত সহায়তা করে না কারণ আমি ভিজুয়াল স্টুডিও 2015 ব্যবহার করছি using

VS2015 এ উপস্থিত হওয়ার জন্য আমি কীভাবে "নুগেট প্যাকেজ পুনরুদ্ধার সক্ষম করুন" বিকল্পটি পাব?

আমি ফাইল> নতুন প্রকল্প বেছে নিয়ে একটি খালি এএসপি.নেট ওয়েব অ্যাপ্লিকেশন তৈরি করেছি । আমি এই মেনু বিকল্পটি খুঁজছি।

এখানে চিত্র বর্ণনা লিখুন

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


4
আপনি এটি ওয়েব প্রোজেক্টের নয় বরং আপনার সমাধানের বিরুদ্ধে চেষ্টা করছেন তা নিশ্চিত করুন। ডিফল্টরূপে কেবলমাত্র একটি প্রকল্প থাকলে সমাধানটি প্রদর্শিত হয় না
জে কনস্ট্যান্টাইন

1
হ্যাঁ, এটি অবশ্যই তৈরি করা সহজ ভুল তবে আমি সমাধানটির বিরুদ্ধে পরীক্ষা করার বিষয়টি নিশ্চিত করেছিলাম, আমি মনে করি এটি 2015 সম্পর্কিত হতে পারে। আমি যখন একই পদক্ষেপগুলি অনুসরণ করি তখন সক্ষম বিকল্পটি ভিএস ২০১৩ এ উপলব্ধ।
ড্যান

2
একই অবস্থা. এমনকি আমি ভিজেট ফোল্ডারটি মুছে ফেলার চেষ্টা করেছি যা ভিএস 2013 এর নুগেট প্যাকেজ পুনরুদ্ধার সক্ষম করুন বিকল্পটি পুনরায় সক্রিয় করে তবে এখনও কোনও ডাইস নেই। আমি একটি বিদ্যমান এমভিসি অ্যাপ্লিকেশনটি খোলার চেষ্টা করছি যা ভিএস 2013 সালে তৈরি হয়েছিল
ভিনি কেলি 15'15

4
@ জাস্টানথরদেব আপনার মন্তব্যটি আরও কিছুটা উত্পাদনশীল করার জন্য যদি আপনি নতুন কর্মপ্রবাহের একটি রেফারেন্স সরবরাহ করেন তবে এটি কার্যকর হবে।
avantprime

1
আমি ওলিগোফ্রেন দ্বারা উল্লিখিত ডেভিড এবোয়ের নিবন্ধটি দেখতে পাইনি তাই আমি সবেমাত্র নোটপ্যাড ++ এ স্লান ও সিএসপোজ ফাইলগুলি খুলেছি এবং তার বর্ণনাকারী বিভাগগুলি মুছে ফেলেছি। আমার সমাধানটি ভিএস ২০১৫-তে খোলা ছিল এবং আমি একবার ফাইলগুলি সংরক্ষণ করেছিলাম, ভিএস আমাকে সেগুলি পুনরায় লোড করতে অনুরোধ করেছিল এবং আমার সমাধানের রেফারেন্সগুলি এখন ঠিক আছে এবং আমার সমাধান সংকলন করে। অনেক ধন্যবাদ, ভিনে!
ধনী ওয়ার্ড

উত্তর:


248

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

  1. '.nuget'সমাধান থেকে সমাধান ডিরেক্টরিটি সরান
  2. nuget.targetsআপনার .csprojবা .vbprojফাইলগুলি থেকে সমস্ত উল্লেখ মুছে ফেলুন । যদিও আনুষ্ঠানিকভাবে সমর্থিত নয়, ডকুমেন্টটি পাওয়ারশেল স্ক্রিপ্টের সাথে লিঙ্ক করে যদি আপনার অনেক প্রকল্প থাকে যা পরিষ্কার করা দরকার। আমি ম্যানুয়ালি আমার হাতে সম্পাদনা করেছি যাতে আমি এর সাথে আমার অভিজ্ঞতা সম্পর্কিত কোনও প্রতিক্রিয়া জানাতে পারি না।

হাত দিয়ে আপনার ফাইলগুলি সম্পাদনা করার সময়, আপনি যা খুঁজছেন তা এখানে:

সমাধান ফাইল (.sln)

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".nuget", ".nuget", "{F4AEBB8B-A367-424E-8B14-F611C9667A85}"
ProjectSection(SolutionItems) = preProject
    .nuget\NuGet.Config = .nuget\NuGet.Config
    .nuget\NuGet.exe = .nuget\NuGet.exe
    .nuget\NuGet.targets = .nuget\NuGet.targets
EndProjectSection
EndProject

প্রকল্প ফাইল (.csproj / .vbproj)

  <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>

3
আমি এখানে পুরোপুরি কিছু মিস করছি। আমি যখন এই পদ্ধতিটি ব্যবহার করি, তখন আমার কাছে থাকা প্রতিটি সমাধানে প্যাকেজগুলির একটি বোতল লোড পাই। আমি 10 টি প্যাকেজ সহ একটি সমাধান পেয়েছি এবং ঠিক একই প্যাকেজগুলির সাথে আরেকটি সমাধান পেয়েছি: 10 টি প্যাকেজ সমেত দুটি পৃথক ডিরেক্টরি তৈরি করা হয়। এই পদ্ধতিটি ব্যবহার করে, আপনি কীভাবে আপনার সমস্ত প্যাকেজগুলিকে একক ডিরেক্টরিতে একীভূত করবেন (যেমন পুরানো ভিএস ২০১৩ পদ্ধতিটি নুগেট.কনফিগ ফাইল সম্পাদনা করে মঞ্জুরি দেয়)?
Quarkly

.Nuget ফোল্ডারটি দেখছেন না? প্যাকেজ ফোল্ডারে ফোল্ডারগুলি মুছে ফেলার বিষয়ে সমাধানগুলি দেখুন। আপনার প্যাকেজটি অর্ধেক পুনরুদ্ধার করা সম্ভব, এবং সেই আবর্জনা এটি পুরোপুরি পুনরুদ্ধার করা থেকে আটকাচ্ছে।
গ্রেগ

প্রকৃতপক্ষে এটিই ছিল সমাধান। অতিরিক্ত হিসাবে এটি - আমি প্রকল্পটি তৈরি শুরু করার আগে "নুগেট পুনরুদ্ধার" যুক্ত করেছি। ন্যুগেট প্যাকেজগুলি স্বয়ংক্রিয়ভাবে ডাউনলোড হয় এবং এর পরে প্রকল্পের বিল্ড ঠিকঠাক কাজ করে।
টারমোপিকারো

5
কিছুটা সময় বাঁচাতে, @ ভিনিকেলি দ্বারা উল্লিখিত গিটহাব সংগ্রহস্থল থেকে সম্পাদনের জন্য স্ক্রিপ্টটি হ'ল মাইগ্রেটটোওআউটমেটিক প্যাকেজরেস্টোর.পিএস 1, এর যাদুটি!
রিগা

60

মাইক্রোসফ্ট ভিএস ২০১৫-তে 'নিউগেট প্যাকেজ রিস্টোর সক্ষম করুন' এর জন্য সমর্থন বাদ দিয়েছে এবং পুরানো সমাধানগুলি মাইগ্রেট করতে বা নতুন সমাধানগুলিতে বৈশিষ্ট্যটি যুক্ত করতে আপনাকে কিছু ম্যানুয়াল পরিবর্তন করতে হবে। নতুন বৈশিষ্ট্যটি নুগেট প্যাকেজ পুনরুদ্ধারে বেশ ভালভাবে বর্ণনা করা হয়েছে ।

এখানে বিদ্যমান প্রকল্পগুলির জন্য স্থানান্তর গাইডও রয়েছে (পূর্বে উল্লিখিত): নিউগেট মাইগ্রেশন গাইড

আপগ্রেড করার সময়:

  1. .nuget ডিরেক্টরিটি মুছবেন না।
  2. Nuget.exe এবং nuget.targets ফাইল মুছুন।
  3. Nuget.config ছেড়ে দিন।
  4. অনুগেট টার্গেটগুলিতে যে কোনও রেফারেন্সের প্রতিটি ফাইলের ফাইলটি হাতছাড়া করুন। উল্লিখিত পাওয়ারশেল লিপিটি ভাল থেকে বেশি ক্ষতি করেছে বলে মনে হয়েছে।

একটি নতুন প্রকল্প তৈরি করার সময়:

  1. আপনার ভিজ্যুয়াল স্টুডিও 2015 সমাধানে .nuget নামক একটি সমাধান ডিরেক্টরি তৈরি করুন।
  2. সমাধান ডিরেক্টরিটির একটি প্রকৃত ডিরেক্টরি তৈরি করুন (যেখানে .sln ফাইলটি বাস করে) এবং এটিকে .nuget কল করুন (দ্রষ্টব্য যে ডিরেক্টরিটি একই নাম থাকা সত্ত্বেও প্রকৃত ফাইল সিস্টেম ডিরেক্টরি হিসাবে এক নয়) নোট করুন।
  3. .Uget ডিরেক্টরিতে একটি ফাইল তৈরি করুন যার নাম nuget.config।

  4. পদক্ষেপ # 2-এ তৈরি সমাধান ডিরেক্টরিতে 'nuget.config' যুক্ত করুন।

  5. Nuget.config ফাইলে নিম্নলিখিত পাঠ্যটি রাখুন:

    <?xml version="1.0" encoding="utf-8"?> <configuration> <config> <add key="repositorypath" value="$\..\..\..\..\Packages" /> </config> <solution> <add key="disableSourceControlIntegration" value="true" /> </solution> </configuration>

এই কনফিগারেশন ফাইলটি আপনাকে আপনার সমস্ত প্যাকেজগুলি একক স্থানে একত্রীকরণের অনুমতি দেবে যাতে আপনার ফাইল সিস্টেমে একই প্যাকেজের প্রায় 20 টি অনুলিপি ভেসে উঠবে না। আপেক্ষিক পথটি আপনার সমাধান ডিরেক্টরি আর্কিটেকচারের উপর নির্ভর করে পরিবর্তিত হবে তবে এটি আপনার সমস্ত সমাধানের সাধারণ ডিরেক্টরিতে নির্দেশ করবে।

পদক্ষেপ 5 পরে আপনার ভিজ্যুয়াল স্টুডিও পুনরায় চালু করা দরকার Nu

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


1
নুগেট.টারাজেটস ফাইলটি কেন মুছবেন, যখন অনুপস্থিত হবে তখন আমি কি একটি ধারাবাহিক বিল্ড পাব?
ফ্রয়েড নীলসেন

1
লক্ষ্যগুলি এখন আইডিইতে একীভূত হবে এবং সেইসাথে 'নুগেট.এক্সে' যে ফাংশন সরবরাহ করত তা উপস্থিত রয়েছে appear আপনার এখনও প্রয়োজন কেবলমাত্র কনফিগারেশন।
Quarkly

1
ডিআরএরির দ্বারা উল্লিখিত পদক্ষেপগুলি ছাড়াও, আমাকে নিম্নলিখিতগুলি করতে হয়েছিল: 1) $ \ .. \ .. \ .. \ .. \ .. Instead প্যাকেজগুলির পরিবর্তে, ব্যবহৃত ../../ (উইন্ডোজ প্যারেন্ট পাথ কনভেনশন, না start শুরুতে 2) সমাধানটি সংরক্ষণ করুন, প্যাকেজ ইনস্টল দ্বারা পড়তে এবং সম্মানিত করার জন্য নুগেট কনফিগের জন্য ঘনিষ্ঠ এবং পুনরায় খুলুন
সুধাংশু মিশ্র

এটি আমার নতুন ভিএস ২০১৫ প্রকল্পের জন্য সহায়তা করেছে যেখানে আমি প্যাকেজগুলির ডীরের কমিট করেছি এবং নিউগেট নির্ভরতার কারণে দলের অন্যান্য সদস্যরা পুনর্নির্মাণ করতে পারেনি।
আজেক-পিডিএক্স

1
পদক্ষেপ 5 করার পরে আপনাকে ভিজ্যুয়াল স্টুডিও পুনরায় চালু করতে হবে Nu নাগেট আপনি না করা পর্যন্ত পরিবর্তনগুলি সনাক্ত করতে পারবেন না।
ব্যারি কোলেব্যাঙ্ক জুনিয়র

35

Ptionচ্ছিকভাবে আপনি "প্যাকেজগুলি" ফোল্ডার থেকে সমস্ত ফোল্ডার সরিয়ে ফেলতে পারেন এবং "সমাধানের জন্য নিউগেট প্যাকেজগুলি পরিচালনা করুন ..." নির্বাচন করতে পারেন। এই ক্ষেত্রে নুগেট প্যাকেজ উইন্ডোতে "পুনরুদ্ধার" বোতামটি উপস্থিত হয়।


1
"প্যাকেজগুলি" ফোল্ডারের অভ্যন্তরে ফোল্ডারগুলি সরানোর পরে নুগেট প্যাকেজ উইন্ডোটি বন্ধ এবং পুনরায় খোলার চেষ্টা করুন।
ইভান ব্র্যানেট

6
+1 এটি আমার পক্ষে কাজ করেছে, নোট করুন যে রিস্টোর বোতামটি ট্যাবটির ঠিক নীচে, উইন্ডোটির শীর্ষে পপ আপ হয়। বলে: "কিছু নুগেট প্যাকেজ এই সমাধান থেকে নিখোঁজ হয়েছে your আপনার অনলাইন প্যাকেজ উত্স থেকে পুনরুদ্ধার করতে ক্লিক করুন" "
ইরুজা

এত সহজ এবং সহজ .. এটি আমার পক্ষে কাজ করেছে .. অনুমান করুন এটির আরও বেশি ভোট দেওয়া উচিত উত্তর :)
নির্মান

তাই সহজ এবং সহজ। এই উত্তর হওয়া উচিত।
এক্সেল

.Gitignore ফাইলটিতে এই ফোল্ডারটি যুক্ত করা কি ভাল ধারণা হবে না?
এক্সেল

26

মাইকের দ্বারা ইতিমধ্যে উল্লিখিত হিসাবে, ভিএস ২০১৫ এ 'নিউগেট প্যাকেজ রিস্টোর সক্ষম করুন' বিকল্প নেই। আপনাকে ম্যানুয়ালি পুনরুদ্ধার প্রক্রিয়া শুরু করতে হবে। একটি দুর্দান্ত উপায় - ফাইল এবং ডিরেক্টরিগুলির সাথে গোলযোগ ছাড়াই - নিউগেট প্যাকেজ ম্যানেজমেন্ট কনসোলটি ব্যবহার করা হচ্ছে: 'কুইক স্টার্ট' ক্ষেত্রটি (সাধারণত উপরের ডানদিকে কোণায়) ক্লিক করুন, consoleম্যানেজমেন্ট কনসোলটি খুলুন এবং কমান্ডটি প্রবেশ করুন:

Update-Package reinstall

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

Update-Package reinstall -ProjectName MyProject

অবশ্যই এটি তখনই প্রয়োজনীয় যখন Restoreবোতামটি - কখনও কখনও ভিএস ২০১৫ দ্বারা সরবরাহ করা - পাওয়া যায় না। আরও দরকারী আপডেট কমান্ড এখানে তালিকাভুক্ত এবং ব্যাখ্যা করা হয়েছে: https://docs.microsoft.com/en-us/nuget/consume-packages/reinstalling- এবং-updating- packages


অনেক অনেক ধন্যবাদ, আমারও একই সমস্যা ছিল। আমি আপনার প্রক্রিয়াটির মাধ্যমে আমার সমস্যার সমাধান করেছি। আপনাকে অনেক ধন্যবাদ
ম্যাকেলি

এখানে একই, একমাত্র তিনিই কাজ করেছিলেন এবং পুরো জায়গা জুড়ে রচিত একগুচ্ছ জিনিসগুলির প্রয়োজন নেই
হার্ভে লিন

এখানে সবচেয়ে দরকারী উত্তর!
নিও

13

আপনার যদি কোনও সমস্যা হয় বা কোনও প্যাকেজ অনুপস্থিত থাকে তবে আপনি কেবল আপনার প্রকল্পে ডান-ক্লিক করতে পারেন এবং " সমাধানের জন্য নিউগেট প্যাকেজগুলি পরিচালনা করুন ... " নির্বাচন করতে পারেন । এটি ক্লিক করার পরে একটি পর্দা খোলা হবে যেখানে আপনি "পুনরুদ্ধার" বলে মেনু বার দেখতে পাবেন: প্রত্যর্পণ করা

এটিতে ক্লিক করুন এবং প্রয়োজনীয় প্যাকেজগুলি স্বয়ংক্রিয়ভাবে ইনস্টল হবে।
আমি বিশ্বাস করি এটিই আপনি যা খুঁজছেন, এটি আমার সমস্যার সমাধান করে।


3
তবে এটি কেবল তখনই সহায়তা করে যদি সেই সতর্কতা বারটি প্রদর্শিত হয়, এটি আমার ক্ষেত্রে হয় না।
নিকোলাস পিটারসেন

2
একটি পদক্ষেপ যা ম্যানুয়ালি প্যাকেজ ইনস্টল করে একটি স্বয়ংক্রিয় পুনরুদ্ধারের বিন্দু সম্পূর্ণরূপে মিস করে।
Quarkly

আমি বিশ্বাস করি এটি সম্ভবত গ্রহণযোগ্য উত্তর হওয়া উচিত, এটি একই কার্যকারিতা
ব্যবহারকারী 25064

1
সমাধানটিতে ডান ক্লিক করে পুনরুদ্ধার করার বিকল্পটি আমি দেখতে পেয়েছি। এটি সেখানে "সমাধানের জন্য নিউগেট প্যাকেজগুলি পরিচালনা করুন" এর অধীনে ছিল। আমার জন্য কৌশলটি।
ড্যারিল

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


6

Vx20XX থেকে VS2015 এ নুগেট প্যাকেজগুলির সাথে প্রকল্পগুলি আপগ্রেড করার সময় নুগেট প্যাকেজগুলির ক্ষেত্রে আপনার সমস্যা হতে পারে।

ত্রুটি বার্তার উদাহরণ: এই প্রকল্পটি এই কম্পিউটারে অনুপস্থিত নুগেট প্যাকেজগুলির উল্লেখ করে। সেগুলি ডাউনলোড করার জন্য নিউগেট প্যাকেজ পুনরুদ্ধার সক্ষম করুন।

আপডেট 2016-02-06: আমার তথ্যের সাথে একটি লিঙ্ক ছিল তবে এটি আর কাজ করে না। আমার সন্দেহ যে সাম্প্রতিক একটি পথ সমস্যার সমাধান করেছে ???

আমি এমএসবিল্ড-ইন্টিগ্রেটেড প্যাকেজ পুনরুদ্ধার বনাম স্বয়ংক্রিয় প্যাকেজ পুনরুদ্ধার করে এমন একটি ছোট প্রোগ্রাম লিখতে আমার সমস্যা সমাধান করেছি

আপনি এখানে সরঞ্জাম নির্বাহযোগ্য ডাউনলোড করতে পারেন

দয়া করে আমাকে ফলাফলটি জানাবেন :-)!

এখানে চিত্র বর্ণনা লিখুন

রেফারেন্স হিসাবে কোড:

<Window x:Class="FixNuGetProblemsInVs2015.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:FixNuGetProblemsInVs2015"
        mc:Ignorable="d"
        Title="Fix NuGet Packages problems in Visual Studio 2015 (By Eric Ouellet)" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>

        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition Width="10"></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Row="0" Grid.Column="0">Root directory of projects</TextBlock>
        <Grid Grid.Row="0" Grid.Column="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
            </Grid.ColumnDefinitions>

            <TextBox Grid.Column="0" Name="DirProjects"></TextBox>
            <Button Grid.Column="1" VerticalAlignment="Bottom" Name="BrowseDirProjects" Click="BrowseDirProjectsOnClick">Browse...</Button>
        </Grid>

        <!--<TextBlock Grid.Row="1" Grid.Column="0">Directory of NuGet Packages</TextBlock>
        <Grid Grid.Row="1" Grid.Column="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition></ColumnDefinition>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
            </Grid.ColumnDefinitions>

            <TextBox Grid.Column="0" Name="DirPackages"></TextBox>
            <Button Grid.Column="1"  Name="BrowseDirPackages" Click="BrowseDirPackagesOnClick">Browse...</Button>
        </Grid>-->

        <TextBox Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="3" Name="TxtLog" IsReadOnly="True"></TextBox>

        <Button Grid.Row="3" Grid.Column="0" Click="ButtonRevertOnClick">Revert back</Button>
        <Button Grid.Row="3" Grid.Column="2" Click="ButtonFixOnClick">Fix</Button>
    </Grid>
</Window>


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Forms;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml;
using System.Xml.Linq;
using Application = System.Windows.Application;
using MessageBox = System.Windows.MessageBox;

/// <summary>
/// Applying recommanded modifications in section : "MSBuild-Integrated package restore vs. Automatic Package Restore"
/// of : http://docs.nuget.org/Consume/Package-Restore/Migrating-to-Automatic-Package-Restore
/// </summary>

namespace FixNuGetProblemsInVs2015
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            DirProjects.Text = @"c:\prj";
            // DirPackages.Text = @"C:\PRJ\NuGetPackages";
        }

        private void BrowseDirProjectsOnClick(object sender, RoutedEventArgs e)
        {
            FolderBrowserDialog dlg = new FolderBrowserDialog();
            dlg.SelectedPath = DirProjects.Text;
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                DirProjects.Text = dlg.SelectedPath;
            }
        }

        //private void BrowseDirPackagesOnClick(object sender, RoutedEventArgs e)
        //{
        //  FolderBrowserDialog dlg = new FolderBrowserDialog();
        //  dlg.SelectedPath = DirPackages.Text;
        //  if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        //  {
        //      DirPackages.Text = dlg.SelectedPath;
        //  }
        //}

        // private string _dirPackages;

        private void ButtonFixOnClick(object sender, RoutedEventArgs e)
        {
            DoJob(false);
        }

        private void ButtonRevertOnClick(object sender, RoutedEventArgs e)
        {
            DoJob(true);
        }

        private void DoJob(bool revert = false)
        {
            TxtLog.Text = "";

            string dirProjects = DirProjects.Text;
            // _dirPackages = DirPackages.Text;

            if (!Directory.Exists(dirProjects))
            {
                MessageBox.Show("Projects directory does not exists: " + dirProjects);
                return;
            }

            //if (!Directory.Exists(_dirPackages))
            //{
            //  MessageBox.Show("Packages directory does not exists: " + _dirPackages);
            //  return;
            //}

            RecurseFolder(dirProjects, revert);
        }

        private void RecurseFolder(string dirProjects, bool revert = false)
        {
            if (revert)
            {
                Revert(dirProjects);
            }
            else
            {
                FixFolder(dirProjects);
            }

            foreach (string subfolder in Directory.EnumerateDirectories(dirProjects))
            {
                RecurseFolder(subfolder, revert);
            }
        }

        private const string BackupSuffix = ".fix_nuget_backup";

        private void Revert(string dirProject)
        {
            foreach (string filename in Directory.EnumerateFiles(dirProject))
            {
                if (filename.ToLower().EndsWith(BackupSuffix))
                {
                    string original = filename.Substring(0, filename.Length - BackupSuffix.Length);
                    if (File.Exists(original))
                    {
                        File.Delete(original);                                          
                    }
                    File.Move(filename, original);
                    Log("File reverted: " + filename + " ==> " + original);
                }
            }
        }

        private void FixFolder(string dirProject)
        {
            BackupFile(System.IO.Path.Combine(dirProject, "nuget.targets"));
            BackupFile(System.IO.Path.Combine(dirProject, "nuget.exe"));

            foreach (string filename in Directory.EnumerateFiles(dirProject))
            {
                if (filename.ToLower().EndsWith(".csproj"))
                {
                    FromProjectFileRemoveNugetTargets(filename);
                }
            }
        }

        private void BackupFile(string path)
        {
            if (File.Exists(path))
            {
                string backup = path + BackupSuffix;
                if (!File.Exists(backup))
                {
                    File.Move(path, backup);
                    Log("File backup: " + backup);
                }
                else
                {
                    Log("Project has already a backup: " + backup);
                }
            }
        }

        private void FromProjectFileRemoveNugetTargets(string prjFilename)
        {
            XDocument xml = XDocument.Load(prjFilename);

            List<XElement> elementsToRemove = new List<XElement>();

            foreach (XElement element in xml.Descendants())
            {
                if (element.Name.LocalName == "Import")
                {
                    var att = element.Attribute("Project");
                    if (att != null)
                    {
                        if (att.Value.Contains("NuGet.targets"))
                        {
                            elementsToRemove.Add(element);
                        }
                    }
                }

                if (element.Name.LocalName == "Target")
                {
                    var att = element.Attribute("Name");
                    if (att != null && att.Value == "EnsureNuGetPackageBuildImports")
                    {
                        elementsToRemove.Add(element);
                    }
                }
            }

            if (elementsToRemove.Count > 0)
            {
                elementsToRemove.ForEach(element => element.Remove());
                BackupFile(prjFilename);
                xml.Save(prjFilename);
                Log("Project updated: " + prjFilename);
            }
        }

        private void Log(string msg)
        {
            TxtLog.Text += msg + "\r\n";
        }

    }
}

প্রোগ্রামটি আমার সলিউশনে একটি টন প্রকল্পকে রূপান্তর করার জন্য দুর্দান্ত কাজ করেছে। সর্বশেষতম সংস্করণে "নিউগেট প্যাকেজগুলির ডিরেক্টরি" ক্ষেত্র রয়েছে তবে আউটপুটটিকে প্রভাবিত করবে বলে মনে হচ্ছে না। এটার কাজ কি?
ক্রিস্টোফার অস্ট্রাস্ট

দুঃখিত, আমার কোন ধারণা নেই। আমার সন্দেহ হয় যে এটি ফাইলের বিষয়বস্তুর উপর নির্ভর করবে। সম্ভবত আপনি এই ক্রিয়াকলাপটি ট্র্যাক করতে পারেন: "ফর্মপ্রজেক্টফাইরেমুভুটিজার্টস" এবং দেখুন আপনার ফাইলটি প্রভাবিত হতে পারে কিনা? দুঃখিত যে খারাপ উত্তরের জন্য, আমার মনে আছে না কি আমি কোডেড :-( আমি শুধু জানি আমি সাফল্যের সঙ্গে 2 টি পৃথক কম্পিউটারে দুইবার ব্যবহার করা।
এরিক কুযেলেট

5

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


4

আমি অনুমান করি যে asp.net 4 প্রকল্পের জন্য আমরা স্বয়ংক্রিয়ভাবে পুনরুদ্ধার করতে চলেছি, সুতরাং এটির জন্য কোনও প্রয়োজন নেই। পুরানো প্রকল্পগুলির জন্য আমি মনে করি রূপান্তর করার জন্য কিছুটা কাজ করা দরকার।

http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore


তুমি সম্ভবত সঠিক. আমি ঠিক ভিএস ২০১৩-তে ঠিক একই ধাপগুলি ব্যবহার করে প্রকল্পটি তৈরির চেষ্টা করেছি এবং সেখানে "পেরেক প্যাকেজ পুনরুদ্ধার সক্ষম করুন" ছিল was লিঙ্কটির জন্য ধন্যবাদ, আমি এখনই এটি পরীক্ষা করে দেখব।
ড্যান

4

এই পদ্ধতিটি আমার পক্ষে কাজ করেছে:

  • VS2015 বন্ধ করুন
  • ভিএস2013-এ অস্থায়ীভাবে সমাধানটি খুলুন এবং সমাধানটিতে ডান ক্লিক করে নুগেট প্যাকেজ পুনরুদ্ধার সক্ষম করুন (আমি আবার একটি পুনর্নির্মাণও করেছি, তবে আমার সন্দেহ হয় যে এটির প্রয়োজন নেই)।
  • VS2013 বন্ধ করুন
  • ভিএস2015-এ সমাধানটি আবার খুলুন

আপনি এখন VS2015 এ নুগেট প্যাকেজ পুনরুদ্ধার সক্ষম করেছেন


4

নমুনা প্রকল্প gplus-quickstart-csharp-মাস্টার নির্মাণের চেষ্টা করার সময় আমি একই সমস্যার মুখোমুখি হয়েছিলাম ।

আমি ত্রুটি বার্তাকে ঘনিষ্ঠভাবে দেখেছি এবং এই ত্রুটিটি কাটিয়ে ওঠার জন্য একটি প্রচেষ্টা পেয়েছি, আশা করি, এটি সাহায্য করবে।

  • সমাধান ফাইলটিতে ডান ক্লিক করুন এবং উইন্ডোজ এক্সপ্লোরার এ খুলুন।
  • NuGet.Config, NuGet.exe, NuGet.targets ( লিঙ্ক ডাউনলোড করুন বা কেবল অন্য প্রকল্প থেকে অনুলিপি করুন এবং প্রতিস্থাপন) দিয়ে নুগেট ফোল্ডারটি অনুলিপি করুন
  • সমাধান পুনর্নির্মাণের চেষ্টা করুন।

উপভোগ করুন !!


4

ইভান ব্র্যানেটসের সমাধানটি মূলত যা আমার জন্য এটি স্থির করে, তবে আরও কিছু বিবরণ ভাগ করা যায়।

আমার ক্ষেত্রে, আমি অটো প্যাকেজ পুনরুদ্ধার এবং টিএফএস ব্যবহার করে ভিএস 2015 তে ছিলাম । এটি সমস্ত সুন্দর ডিফল্ট স্টাফ।

সমস্যাটি হ'ল যখন অন্য বিকাশকারী টিএফএস থেকে সমাধান পাওয়ার চেষ্টা করেছিলেন, কিছু প্যাকেজ পুরোপুরি পুনরুদ্ধার করা হয়নি। (কেন, এটি আমি এখনও পুরোপুরি নিশ্চিত নই।) তবে প্যাকেজ ফোল্ডারে রেফারেন্স এবং নিউগেট প্যাকেজটির জন্য একটি ফোল্ডার রয়েছে তবে এটি প্রসারিত হচ্ছে না (বলুন একটি .dll রয়েছে এমন একটি লিব ফোল্ডারটি অনুপস্থিত ছিল)) এই অর্ধেক সেখানে, তবে সত্যিই সঠিক ধারণাটি প্যাকেজটিকে পুনরুদ্ধার করা থেকে আটকাচ্ছিল না।

আপনি এটিকে চিনতে পারবেন কারণ সমাধানের সমাধান না হওয়ার বিষয়ে রেফারেন্সের একটি হলুদ বিস্মৃতিবোধ থাকবে।

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


4

বন্ধ প্যাকেজ ফোল্ডারের অধীনে সবকিছু মুছুন। আপনার সমাধানটি আবার খুলুন। আপনার প্রকল্পে ডান ক্লিক করুন, 'নুগেট প্যাকেজগুলি পরিচালনা করুন ...' নির্বাচন করুন। আপনাকে প্যাকেজ পুনরুদ্ধার করতে জিজ্ঞাসা করে 'নুগেট প্যাকেজ ম্যানেজার' উইন্ডোর উপরে একটি হলুদ বার উপস্থিত হবে। এটি আমার পক্ষে কাজ করেছে।


3

প্যাকেজ ম্যানেজার কনসোল (ভিজ্যুয়াল স্টুডিও, সরঞ্জামসমূহ> নুগেট প্যাকেজ ম্যানেজার> প্যাকেজ ম্যানেজার কনসোল): সলিউশন এক্সপ্লোরারে প্রদর্শিত হওয়ায় ক্ষতিগ্রস্থ প্রকল্পের নাম যেখানে আপডেট-প্যাকেজ -ইনস্টল -প্রজেক্টনাম কমান্ড চালান। সমাধানের সমস্ত প্যাকেজ পুনরুদ্ধার করতে নিজেই আপডেট-প্যাকেজ-পুনরায় ইনস্টল করুন। আপডেট-প্যাকেজ দেখুন। আপনি যদি চান তবে একটি একক প্যাকেজ পুনরায় ইনস্টল করতে পারেন।

https://docs.microsoft.com/en-us/nuget/quickstart/restore থেকে


1

আপনি প্যাকেজ ইনস্টল করার চেষ্টা করার সময় প্রোগ্রামটি চালানোর ফলেও হতে পারে। আইআইএস অন্তর্নির্মিত ব্যাকগ্রাউন্ডে চলার সময় আপনি যদি এটি ক্লিক করার চেষ্টা করেন তবে এটি ধূসর হয়ে গেছে।


1

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


1

জন্য .NET কোর প্রকল্প , রান dotnet restoreবা dotnet buildকমান্ড NuGet Package Manager Console(যা স্বয়ংক্রিয়ভাবে পুনঃস্থাপন রান)

আপনি এ থেকে কনসোল চালাতে পারেন

সরঞ্জামগুলি> নিউগেট প্যাকেজ ম্যানেজার> প্যাকেজ ম্যানেজার কনসোল


1

আমি ব্যবহৃত msbuild /t:restore


Creditণ এবং উত্স:

আমার সমস্যাটি এমএসবিল্ডের সাথে ছিল তাই আমি @ ভিনি কেলির লিঙ্কটি অনুসরণ করেছি : এমএসবিল্ড-সংহত সমাধানগুলি স্বয়ংক্রিয় প্যাকেজ পুনরুদ্ধারে স্থানান্তরিত করা

এবং...

এটি একটি ছানার মতো কাজ করেছে =]

এমএস বিল্ড : msbuild /t:restoreকমান্ডটি ব্যবহার করুন , যা প্রকল্প ফাইলের তালিকাভুক্ত প্যাকেজ প্যাকেজগুলি পুনরুদ্ধার করে ( কেবল প্যাকেজ রেফারেন্স )। কেবল নিউগেট 4.x + এবং এমএসবাইল্ড 15.1+ এ উপলব্ধ, যা ভিজ্যুয়াল স্টুডিও 2017 এর সাথে অন্তর্ভুক্ত । nuget restoreএবং dotnet restoreউভয়ই প্রযোজ্য প্রকল্পগুলির জন্য এই আদেশটি ব্যবহার করে।


আমার ক্ষেত্রে / টি: পুনরুদ্ধার প্রকল্পটি তৈরি করে না তার জন্য আমাকে কমান্ডটি ব্যবহার করতে / পুনরুদ্ধার করতে হয়েছিল
কিশান বৈষ্ণব

1

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

  1. সরঞ্জাম - ন্যুগেট প্যাকেজ ম্যানেজার - প্যাকেজ ম্যানেজার সেটিংস
  2. কথোপকথনের বাম নেভের 'প্যাকেজ উত্স' ক্লিক করুন।
  3. নিউট ইউআরএল যোগ করতে প্লাস চিহ্ন (+) ব্যবহার করুন: https://api.nuget.org/v3/index.json

0

আমাকে প্যাকেজ ফোল্ডারটি বন্ধ করতে হবে এবং পুনরায় (VS2015) সমাধান খুলতে হবে। আমি স্থানান্তর করছিলাম না এবং উত্স নিয়ন্ত্রণে আমার প্যাকেজগুলি পরীক্ষা করা হয়নি। আমি যা বলতে পারি তা হ'ল কিছু গণ্ডগোল হয়েছে এবং এটি এটি স্থির করেছে।


0

মাধ্যমে আমাকে সাহায্য সরঞ্জাম >>> Nuget প্যাকেজ ম্যানেজার >>> সাধারণ তারপর টিক্ বিকল্প Nuget অনুপস্থিত প্যাকেজ ডাউনলোড করার মঞ্জুরি দিন এবং স্বয়ংক্রিয়ভাবে চাক্ষুষ স্টুডিওতে বিল্ড সময় প্যাকেজ অনুপস্থিত জন্য চেক

এখানে চিত্র বর্ণনা লিখুন


0

আমি একই সমস্যা সম্মুখীন হচ্ছি। আমি একটি এমভিসি প্রকল্প যুক্ত করার চেষ্টা করছি যা ভিজ্যুয়াল স্টুডিও ২০১৫ এ আমি তৈরি করা একটি সমাধানে ভিজ্যুয়াল স্টুডিও 2015-এ তৈরি হয়েছিল।

ভিজ্যুয়াল স্টুডিও 2019 এ ইতিমধ্যে বিদ্যমান প্রকল্প রয়েছে, সুতরাং ভিএস 2015-এ আমি তৈরি এই বিদ্যমান প্রকল্পটি যুক্ত করা একই ত্রুটিটিকে ট্রিগার করে। আমি এখানে সমস্ত উত্তর চেষ্টা করেছি কিন্তু এটি সমস্যার সমাধান করে না।

আমি যা করেছি তা হ'ল সলিউশন ফোল্ডারে .nuget ফোল্ডারটি। মূলত ফোল্ডারের স্তরক্রম হ'ল:

Solution Folder (VS 2019)
  -> MVC 1 Project
  -> MVC 2 Project
  -> MVC 3 Project (Project that I am adding)
         -> .nuget folder (It contains a .nuget folder)

সুতরাং যখন আমি সমাধান ফোল্ডারে নিজেই। ন্যাশন ফোল্ডারটি সরানো হয়েছিল তখন বিষয়টি ঠিক হয়ে গেছে:

    Solution Folder (VS 2019)
  -> MVC 1 Project
  -> MVC 2 Project
  -> MVC 3 Project (Project that I am adding)
  -> .nuget folder (It contains a .nuget folder)

0

ভিএস 2019 সংস্করণ 16.4.4 সমাধান লক্ষ্য করে। নেট কোর 3.1

এখানে প্রস্তাবিত প্রায় সকল সমাধান চেষ্টা করার পরে, আমি ভিএস বন্ধ করে দিয়েছি আমি যখন এটি আবার খুললাম তখন কয়েক সেকেন্ড পরে সমস্ত ঠিক হয়ে গেছে ...


-4

এমনকি সহজ, আপনার সমাধানে একটি .nuget ফোল্ডার যুক্ত করুন এবং 'নিউটেট প্যাকেজগুলি পুনরুদ্ধার করুন' উপস্থিত হবে (এটি কাজ করার জন্য nuget.exe উপস্থিত থাকতে হবে কিনা তা নিশ্চিত নয়)।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.