সমাধান থেকে nuget প্যাকেজ পুনরুদ্ধার সরান


148

আমি 'নিউগেট প্যাকেজ পুনরুদ্ধার সক্ষম করুন' ব্যবহার করে একটি সমাধানটিতে সাম্প্রতিক নুগেট প্যাকেজ পুনরুদ্ধার বৈশিষ্ট্যটি যুক্ত করেছি: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

তবে এটি আমার বিল্ড সার্ভারটি ভেঙে ফেলেছে এবং আমার এটি ঠিক করার সময় নেই, তাই আমি এটি সরিয়ে ফেলতে চেয়েছিলাম। আমি যতদূর জানি এর পক্ষে কোনও বিকল্প নেই, সুতরাং আমি আমার সমস্ত * .csproj ফাইল থেকে ম্যানুয়ালি নিম্নলিখিত লাইনটি সরিয়েছি:

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

এখন সমস্যাটি হ'ল প্রতিবার আমার * .csproj ফাইলগুলি পরীক্ষা করা বা আমার সমাধানটি খুলতে গেলে লাইনটি স্বয়ংক্রিয়ভাবে আবার যুক্ত হয়ে যায়, আমি যদি ভুলবশত এটি পরীক্ষা করে দেখি তবে আমার বিল্ডটি ভেঙে দেয় :(

কোনও ধারণা কীভাবে আমি স্থায়ীভাবে এটি অপসারণ করতে পারি?

আপডেট: নীচের উত্তর সত্ত্বেও এটি সমাধানটি খোলার সময় এখনও ফিরে আসতে থাকে, একই সমস্যা আছে এমন কেউ?


2
আপনি কি সোর্স নিয়ন্ত্রণে পরিবর্তনটি রোলব্যাক করতে পারবেন না?
বেটি

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

আপনি কি বিল্ড সার্ভারটি ঠিক করতে পরিচালনা করেছেন? (এবং এটি টিমসিটি কি?), কারণ উপরে আমদানি করা প্রকল্পের লাইনটি আমার টিমসিটিটি ব্যর্থ হওয়ার কারণ করছে
বাল্ডি

@ বাল্ডি না, আমরা টিএফএস বিল্ড ব্যবহার করছি এবং আমি আসলেই এর সমাধানের সন্ধান করিনি, কেবল এটি সরিয়ে
ফেলেছি

3
আমি এই সমস্যাটি সমাধানের জন্য নুগেট দলের পক্ষে একটি সমস্যা তৈরি করেছি। অনুগ্রহ করে এটিতে ভোট দিন nuget.codeplex.com/workitem/3756
dieddog

উত্তর:


214

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

<RestorePackages>true</RestorePackages>

সমস্ত * .csproj ফাইল থেকে ম্যানুয়ালি এই সমস্ত লাইনগুলি সরিয়ে ফেলতে হবে:

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

হালনাগাদ:

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

UPDATE2:

সমাধান রুট থেকে .nuget ফোল্ডারটি মুছুন

UPDATE3:

নুগেটের পরবর্তী সংস্করণে আরও একটি বিভাগ যুক্ত করা হয়েছে যা আপনাকে অপসারণ করতে হবে:

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

Update4

ফোল্ডারে NuGet.Targetsঅবস্থিত ভিতরে .nuget, আরও একটি বিভাগ রয়েছে যা নতুন প্রকল্পগুলিতে যুক্ত হয় ... এটি মিথ্যাতে স্যুইচ করুন।

<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'false'">
    RestorePackages;
    $(BuildDependsOn);
</BuildDependsOn>

7
আমি খুঁজে পেয়েছি যে <Import Project="$(SolutionDir)\.nuget\nuget.targets" />.csproj ফাইলের শেষে একটি রয়েছে যা ম্যানুয়ালি অপসারণ করা দরকার।
টিমডগ

6
হা! আস্তে আস্তে পিছনে ফিরে আসে :)
টিমডগ

5
এই জিনিসটি আমাকে পাশাপাশি জর্জরিত করে চলেছে। যদি আপনার প্রকল্পগুলি অনেকগুলি বিভিন্ন সমাধানে থাকে তবে প্যাকেজ পুনরুদ্ধার বৈশিষ্ট্যটি টিলাবিঘ্ন সমস্যার কারণ করে।
দামিয়ান

7
"নিশ্চিত করুন যে আপনি সমাধানটি বন্ধ করেছেন" আসলে এখানে মূল গুরুত্ব রয়েছে, কারণ ভিএস 2010 সিএসপ্রোজ / এমএসবিল্ড ফাইলগুলি (কিছু নির্দিষ্ট পরিবর্তন না করেই) ক্যাশে করছে বলে মনে হচ্ছে। আমি VS2012 এ এই আচরণটি লক্ষ্য করিনি, তবে ভিজুয়ালস্টুডিওতে এই ফাইলগুলি সংশোধন করার সময় এটি আমাকে অনেকটা জর্জরিত করেছে।
জাভেয়ের ডিকোস্টার

4
আমি এই সমস্যাটি সমাধানের জন্য নুগেট দলের পক্ষে একটি সমস্যা তৈরি করেছি। অনুগ্রহ করে এটিতে ভোট দিন nuget.codeplex.com/workitem/3756
dieddog

48

নিউজ প্যাকেজ পুনরুদ্ধার অক্ষম করতে:

  1. .Nuget ফোল্ডারটি মুছুন
  2. সমস্ত .csproj ফাইল থেকে নির্দিষ্ট লাইনগুলি সরান

সরানোর জন্য লাইনগুলি:

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

দ্রষ্টব্য: সমাধানটি পুনরায় লোড করার আগে আপনি একযোগে সমস্ত পরিবর্তন করেছেন তা নিশ্চিত করুন নাহলে এটি আবার যুক্ত হবে।

এটি নিম্নলিখিত নিবন্ধের উপর ভিত্তি করে: http://bartwullems.blogspot.no/2012/08/disable-nuget-package-restore.html

এছাড়াও, আপনি ডাবল চেক করতে চান হতে পারে এই অপশনটি নিষ্ক্রিয় করা হয়েছে: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages


আমি এই সমস্যাটি সমাধানের জন্য নুগেট দলের পক্ষে একটি সমস্যা তৈরি করেছি। অনুগ্রহ করে এটিতে ভোট দিন nuget.codeplex.com/workitem/3756
dieddog

1
ধন্যবাদ, আমার জন্য এটি কেবল এই বিকল্পটি অক্ষম করছিল
মার্টেন

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

.Nuget ফোল্ডারটি লুকানো রয়েছে এবং আপনাকে কেবল প্রকল্পটি নয় ডিরেক্টরি থেকে এটি সরিয়ে ফেলতে হবে ।
এরিক বার্গস্টেট

8

এখানে কি এই সেটিংটি নেই?

বিকল্পগুলি ... -> প্যাকেজ ম্যানেজারের নিকট করুন -> [আনচেক করুন] অনুপস্থিত প্যাকেজগুলি ডাউনলোড করতে ন্যুগেটকে মঞ্জুরি দিন

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

আমি ভিজ্যুয়াল স্টুডিও পেশাদার + রিসার্চার 8.2 ব্যবহার করছি


আমি আমার সমস্যা সমাধানের জন্য প্যাকেজ ফোল্ডারটি মুছে ফেলেছি এবং প্যাকেজ ক্যাশে সাফ করেছি। ধন্যবাদ!
টেস্টো

1
না, এটি পরে .proj ফাইলগুলি আপডেট করে না - সুতরাং সমস্যাটি ফিরে আসে - তবে এখানে এটি করা ভাল :-)
schmoopy

আউটপুট উইন্ডোটি নির্মাণের সময় Restoring NuGet packages... To prevent NuGet from restoring packages during build, open the Visual Studio Options dialog, click on the Package Manager node and uncheck 'Allow NuGet to download missing packages during build.'এটি দেখায়: এটি কেবল একটি নিশ্চিতকরণ যে এটি যাওয়ার উপায় হওয়া উচিত।
মোসলেম বেন ধাও

1
এটি নিউজ প্যাকেজ পুনরুদ্ধারের সাথে সম্পর্কিত নয়। ভিএস-এর পুরানো সংস্করণগুলিতে "নিউজেট প্যাকেজ রিস্টোর সক্ষম করুন" শিরোনামযুক্ত প্রকল্পগুলির জন্য একটি প্রসঙ্গ মেনু আইটেম ছিল যা কোনও .nuget/ফোল্ডার তৈরি করবে এবং .csprojকোনও .targetsফাইলকে রেফারেন্স করতে আপনার সংশোধন করবে । আপনি nuget.exeআপনার ভিসিএসের প্রতিশ্রুতিবদ্ধ ছিলেন (eww, সমস্যা সমাধানের সমস্যা সমাধানের জন্য সমাধান করুন!) এবং এর মতো কদর্যতা। আজকাল, msbuild /restoreবিদ্যমান এবং ভিএস এর অন্তর্নির্মিত প্যাকেজ পুনরুদ্ধার। ওপি জিজ্ঞাসা করছে যে কীভাবে পুরানো ও খারাপ কাজগুলি করা যায়, কীভাবে ভিএস-র সঠিক অন্তর্নির্মিত প্যাকেজ পুনরুদ্ধার সমর্থনটি নিষ্ক্রিয় করা যায় না।
বিনকি

5

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

নুগেট ওয়েবসাইটটিতে নথির উল্লেখ করুন: এমএসবিল্ড-ইন্টিগ্রেটেড সমাধানগুলি মাইগ্রেট করে স্বয়ংক্রিয় প্যাকেজ রিস্টোরটি http://docs.nuget.org/docs/workflows/migration-to-automatic-package-restore এ ব্যবহার করুন

টিএফএসের সাথে এবং তা ছাড়া রূপান্তর করার জন্য সেখানে তথ্য রয়েছে।

ডেভিড এবোও http://blog.davidebbo.com/2014/01/the-right-way-to-restore-nuget-packages.html এ কিছু তথ্য পোস্ট করেছেন



3

নিউগেটের স্বয়ংক্রিয় প্যাকেজ পুনরুদ্ধারে স্থানান্তর সম্পর্কে একটি ব্লগ পোস্ট রয়েছে: http://docs.nuget.org/docs/workflows/migrating-to-automatic-package-restore

ব্লগ পোস্টে একটি পাওয়ারশেল লিপি উল্লেখ করা আছে যা প্রয়োজনীয় লাইনগুলি স্বয়ংক্রিয়ভাবে অপসারণের যত্ন নেবে (এবং পুনরুক্তি): https://github.com/owen2/AutomaticPackageRestoreMigrationScript/blob/master/migrateToA

একটি নিষ্ক্রিয় নুগেট প্যাকেজ রিস্টোর অপশনটি সরাসরি অফার করাকে ওয়ান ফিক্স হিসাবে চিহ্নিত করা হবে: https://nuget.codeplex.com/workitem/1883


2

আমি 2012 ব্যবহার করে কোনও উপকারের গ্রহণযোগ্য সমাধান অনুসরণ করেছি This যদিও এটি কাজ করে,

  1. সম্পূর্ণরূপে ভিএস বন্ধ করুন
  2. আপডেট করুন <RestorePackages>true</RestorePackages>থেকে <RestorePackages>false</RestorePackages>এবং মুছে<Import Project="$(SolutionDir)\.nuget\nuget.targets" /> লাইনটি
  3. এছাড়াও নতুন নামকরণ nuget.exeকরাnuget.exe.NotExe

2

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

কেবল ইনস্টলারটি চালান (এতে IFixযুক্ত হবে PATH) এবং তারপরে নিম্নলিখিতগুলি চালান:

IFix nugetrestore --fix

এটি কী পরিষ্কার হবে তা দেখতে আপনি প্রথমে এটি চেক মোডে চালাতে পারেন:

IFix nugetrestore --check

1

আমারো একই ইস্যু ছিল. আমি যা করে শেষ করেছি: 1) সমাধানে প্রতিটি প্রকল্পে .csproj ফাইলটিতে যান, নোটপ্যাডে খুলুন এবং এক্সএমএলের অংশটি সরিয়ে সংরক্ষণ করে।

2) তারপরে আমি সমস্ত দ্রষ্টব্যতে প্যাকেজ.কনফিগ ফাইলগুলি সরিয়েছি।

3) তারপরে আমাকে .nuget এবং প্যাকেজ ফোল্ডারগুলি সরিয়ে ফেলতে হয়েছিল।

এই মুহুর্তে, আমার একটি সম্পূর্ণ নুগেট মুক্ত সমাধান ছিল।

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


1

আপনার সমাধান ডিরেক্টরিতে যান যেখানে আপনার [$(SolutionDir)\.nuget\nuget.targets] .nugetফোল্ডার এবং nuget.targetsফাইল রয়েছে তার নীচে ফোল্ডারটি মুছে ফেলুন এবং একবার একবার শেষবারের জন্য আপনার সিএসপোজ থেকে লাইনগুলি পরিবর্তন করুন ।

সমস্যা আবার আপনাকে বাগ করতে ফিরে আসবে না।



0

VS2012 আরসিতে আমার প্রকল্পটি খোলার সময় আমি ঘটনাক্রমে এই "প্যাকেজ পুনরুদ্ধার" বিকল্পটি সক্ষম করেছিলাম এবং এর মতো দেখতে কিছু ত্রুটি পেতে শুরু করেছি:

"ত্রুটি 1 'সি: locate ফোল্ডারএক্স \ সাম্প্রজেক্ট.নুগেট u nuget.exe' সনাক্ত করতে অক্ষম"

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


0

আমি এই পদক্ষেপগুলি গ্রহণ করে এই সমস্যাটি সমাধান করতে সক্ষম হয়েছি:

1) নিশ্চিত হয়ে নিন যে আপনি আপনার সমস্ত বর্তমানের চেক-আউট ফাইলগুলির পরিবর্তনের একটি ব্যাকআপ নিয়েছেন।

2) সমাধান সিলেকশন ফোল্ডারটি শারীরিকভাবে মুছুন: \ (টিএফএসে ম্যাপ করা পথ)।

3) আপনার সমাধানের জন্য টিএফএস থেকে সর্বশেষতম পান।

৪) আপনি পদক্ষেপ -১ এ ব্যাকআপটি থেকে আপনার পরিবর্তনগুলি অনুলিপি করুন (যদি থাকে)।

আশা করি এইটি কাজ করবে !


-2

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

শেষ পর্যন্ত কেবল ফাইলগুলি অনুলিপি করা এবং একটি নতুন প্রকল্প তৈরি করা এবং সমাধানটিতে এটি আমদানি করা সহজ ছিল।


-8

নাগেট চুষছে। এই প্রকল্পগুলির মূল ডিরেক্টরিতে কেবল প্যাকেজ উপাদানগুলি অপসারণ এবং প্যাকেজ উপাদানগুলি প্যাকেজস.কনফিগ থেকে সরান বা মন্তব্য করুন। পরিবর্তে কিছু lib ফোল্ডারে সরাসরি উল্লেখ ব্যবহার করুন।

<?xml version="1.0" encoding="utf-8"?>
  <packages>
    <!--<package id="EntityFramework" version="6.0.2" targetFramework="net45" />-->
  </packages>

এটি অন্য পণ্যগুলির মতো 'স্তন্যপান' করে, যদি আপনি এটি কীভাবে ব্যবহার করতে না জানেন এবং এটি বোঝার চেষ্টা না করেন।
ওয়েবে তিজসমা

এটাই ট্যুর, তবে আমার মতামতটিতে নগ্ন হওয়া আপনাকে আপনার প্রকল্পের উপর পর্যাপ্ত নিয়ন্ত্রণ দেয় না। এছাড়াও নুগেট জিইউআইয়ের জন্য কিছু গুরুতর আপগ্রেড প্রয়োজন। 1. তার স্বজ্ঞাত না, 2. তার হার্ড প্যাকেজ 3. পরিচালনা তার হার্ড 4. ডাউনলোডগুলি অপ্রয়োজনীয় প্যাকেজ 5. পুনঃস্থাপন বন্ধ করতে কখনও কখনও তার pacakges পুনরুদ্ধার করতে সক্ষম
ইগর এন

আমি কিছুটা হলেও সম্মত হই, যদিও আমি মনে করি এটি আসলেই কোনও প্যাকেজ ম্যানেজারের কাছে নেই। দেখে মনে হচ্ছে তারা 3.0 নুগেটের জন্য গুরুতর জিইউআই আপগ্রেডগুলিতে কাজ করছে: blog.nuget.org/20141112/nuget-3.0-preview.html
ওয়েবে টিজসমা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.